Java与安卓基础培训一:Java与C语言思想上的区别两者最本质的区别:面向对象与面向过程C语言是面向过程的语言,而Java是面向对象的。面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。举个例子:例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。功能上的统一保证了面向对象设计的可扩展性。比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。这些就是面向对象与面向过程的区别。面向对象的程序会拥有更大的可扩展性。二:两者在基本数据类型上的区别1.基本变量类型⑴整型类型。包括byte,short,int,long.⑵浮点类型。包括float,double。⑶字符型。包括char。⑷布尔类型。包括boolean。2.变量的定义使用与C语言中的一样。在这里重点讲一下C语言里没有的几种变量类型。⑴布尔型:是有两种逻辑状态的变量,它包含两个值:真和假,即true与false。其值是1和0。例如:boola;//定义一个布尔型的变量a=true;//对变量进行赋值if(a)//因为a的值为ture,所以if的条件为真,会执行if中的语句⑵整型类型名大小取值范围Byte8位-128~127Short16位-32768~32767Int32位-2147683648~2147683647Long64位。。。。。C语言中没有byte与short类型,这些新的类型的使用和int一样,只是它的取值范围不同。⑶浮点型在Java中小数默认的是double型的数据,所以在对float类型的数据进行赋值的时候要在数据的后面加上F或者f。例如:floata=12.56;//这是错误的,正确的应该是floata=12.56f;double类型的使用和C语言中一样。三:流程控制与数组的使用1.Java中的流程控制语句流程控制中的if,if-else,switch,while循环,do-while循环和for循环的用法与C语言中的一致。Java在for循环中多了一种类型,for循环增强:for(数组元素类型变量名:数组名称){//使用变量}例如:int[]arr=newint[100];//定义一个数组Intsum=0;For(inti=0;iarr.length;i++)//使用for循环进行数组的赋值Arr[i]=i+1;For(inte:arr)//for循环增强进行数组元素的遍历Sum+=e;//进行数组元素的累加2.Java中数组的使用数组的使用和C语言中的一样,但定义的时候不大一样,Java中是这样进行定义的:int[]age=newint[100];其中age式数组名,该整形数组的大小是100。也可以写成intage[]=newint[100];也可以在定义的时候进行数组的赋值intage[]=newint[3]{1,2,3};或者intage[]=newint[]{1,2,3};四:Java的基本输入输出Java的输出语句:system.out.println(“HellowWorld!”);//输出HellowWorld!,在输出之后会进行换行。另外一种写法是system.out.print();此时的输出之后不再换行。Java的输入语句:Java的输入比较麻烦,在前期的使用中一般采取的是使用对话框来输入数据,例如:Stringstr=javax.swing.JOptionPane.showInputDialog(“请输入数字”);Intnumber=Integer.parseInt(str);//以整形的方式获取对话框中输入的数据,这就相当于C语言中的scanf语句进行输入。也可以使用scaner类进行输入。需要首先构造一个Scanner对象,并与标准输入流System.in关联。然后使用nextLine输入一行,next读取一个单词,nextInt读取一个整数,nextDouble读取一耳光浮点数并在程序开始添加importjava.util.*;(Scanner类定义在java.util包中,当类不是定义在基本java.lang包中时,都要将包加载进来)实例:importjava.util.*;publicclassMyInput{publicstaticvoidmain(String[]args){//构造Canner对象iputScanneriput=newScanner(System.in);System.out.print(Whatisyourname?);Stringname=iput.nextLine();System.out.print(Howoldareyou?);intage=iput.nextInt();System.out.println(Hello+name+.Nextyear,+you'llbe+(age+1));}}五:Java的基本程序结构1.Java运行原理在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode)(class文件的内容),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。2.简单代码实例publicclassTest1//定义一个类,名称为Test1{publicstaticvoidmain(String[]args)//定义主程序{//主程序的开始//程序代码System.out.println(Hello,World!);//输出Hellow,World}//主程序的结束}//类定义的结束这个程序很简单,但是说明了Java中最重要的一些基础知识:1.Java对大小写敏感;2.Java程序中全部的内容都包含在类中;3.类名必须以字母开头,后面可以跟字母和数字,不可以使用Java保留字;4.源代码的文件必须与类名相同;5.main方法必须是public,每一个Java程序都必须有一个main方法;2.自定义类定义一个类的语法是class类名{//所含变量的定义//类中的函数方法}//类定义的结束例如:classCustomer{//定义一个Customer类Stringname;//类中的成员变量Stringsex;intage;}//类定义的结束3.类的使用在培训的时候直接演示六:Java与Android1.区别与联系安卓Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。安卓系统是基于linux为核心的,而linux是用c语言和少量汇编语言写成的。其上面的应用大多是使用Java编写的,它的基本程序的结构和Java的相同。其中AndroidSDK引用了JavaSDK80%的package,这些package也是在实际开发中经常使用的。具体的包在使用中再做相关的介绍。3.一个最简单的Android程序在Eclipse中新建一个Android工程,这些代码会被自动地创建packagecom.jiahui.activity;//包名importandroid.app.Activity;//导入Activity包importandroid.os.Bundle;//导入包文件publicclassMyActivity01ActivityextendsActivity{//该类继承了Activity类@OverridepublicvoidonCreate(BundlesavedInstanceState){//重写Activity类中的onCreat()//方法super.onCreate(savedInstanceState);//调用父类的构造函数,并传递参数setContentView(R.layout.main);////设置这个Activtiy使用的布局文件}}下面我们对这个程序进行解析;⑴Activity类该类的作用:一是用户与应用程序的交互的接口,二是控件的容器,我们要把控件摆放在这个容器中。⑵onCreat()方法Activity第一次运行时就会调用这个方法,这个方法的调用者是由应用程序框架系统调用。在这里进行该方法的重写。该函数在调用的时候对Activity进行初始化。在这儿通常可以调用setContentView(int)设置在资源文件中定义的UI,使用findViewById(int)可以获得UI中定义的窗口.4.Android程序的文件结构这是新建工程时自动生成的文件。1、src目录是源代码目录,所有允许用户修改的java文件和用户自己添加的java文件都保存在这个目录中2、gen目录是1.5版本新增的目录,用来保存ADT自动生成的java文件,例如R.java或AIDL文件注意:R.java文件(非常重要)a)R.java文件是ADT自动生成的文件,包含对drawable、layout和values目录内的资源的引用指针,Android程序能够直接通过R类引用目录中的资源b)R.java文件不能手工修改,如果向资源目录中增加或删除了资源文件,则需要在工程名称上右击,选择Refresh来更新R.java文件中的代码c)R类包含的几个内部类,分别与资源类型相对应,资源ID便保存在这些内部类中,例如子类drawable表示图像资源,内部的静态变量icon表示资源名称,其资源ID为0x7f020000。一般情况下,资源名称与资源文件名相同3、android.jar文件是Android程序所能引用的函数库文件,Android通过平台所支持API都包含在这个文件中4、assets目录用来存放原始格式的文件,例如音频文件、视频文件等二进制格式文件。此目录中的资源不能被R.java文件索引。,所以只能以资截流的形式读取。一般情况下为空5、main.xml文件,是界面布局文件,利用XML语言描述的用户界面6、Strings.xml文件是程序中的一些字符串的引用7、AndroidManifest.xml是XML格式的Android程序声明文件,包含了Android系统运行Android程序前所必须掌握的重要信息,这些信息包含应用程序名称、图标、包名称、模块组成、授