第2章Android应用层开发语言第2章Android应用层开发语言2.1Java语言的基本语法2.2Java语言的表达式与语句2.3Java语言的类与对象第2章Android应用层开发语言2.1Java语言的基本语法2.1.1基本数据类型1.逻辑类型(1)常量:true、false。(2)变量:用关键字boolean来定义逻辑变量,定义时也可以赋给初值。booleanx;booleanok=true;第2章Android应用层开发语言2.整数类型(1)常量:123,6000(十进制),077(八进制),0x3ABC(十六进制)。(2)整型变量:整型变量分为以下4种。① int型:使用关键字int来定义int型整型变量,定义时也可以赋给初值。对于int型变量,内存分配给它4个字节(Byte)。int型变量的取值范围是 -231~231-1。intx;inteverage=9898;第2章Android应用层开发语言② byte型:使用关键字byte来定义byte型整型变量。对于byte型变量,内存分配给它1个字节,占8位(bit)。byte型变量的取值范围是-27~27-1。③ short型:使用关键字short来定义short型整型变量。对于short型变量,内存分配给它2个字节。short型变量的取值范围是 -215~215-1。④ long型:使用关键字long来定义long型整型变量,对于long型变量,内存分配给它8个字节。long型变量的取值范围是 -263~263-1第2章Android应用层开发语言3.字符类型(1)常量:Unicode表中的字符就是一个字符常量,如“A”、“?”、“9”、“好”、“き”等。Java语言还使用转义字符常量,例如:\n表示换行;\b表示退格;\t表示水平制表。(2)变量:字符变量使用关键字char来定义,例如:charx=‘A’;第2章Android应用层开发语言对于char型变量,内存分配给它2个字节,占16位,最高位不是符号位,没有负数的char。char型变量的取值范围是0~65536。要观察一个字符在Unicode表中的顺序位置,必须使用int型变量显式转换,不可使用short型变量转换,因为char型变量的最高位不是符号位。同样,要得到一个0~65536之间的数所代表的Unicode表中相应位置上的字符,也必须使用char型变量进行显式转换。第2章Android应用层开发语言4.浮点类型浮点类型的变量分为float型和double型两种。(1) float型:float型变量使用关键字float来定义。对于float型变量,内存分配给它4个字节,其取值范围是1038~10-38和(-10)38~(-10)-38。例如:453.5439f,21379.987F,2e40f(2×1040,科学计数法)。第2章Android应用层开发语言(2) double型:double型变量使用关键字double来定义。对于double型变量,内存分配给它8个字节,其取值范围是10-308~10308和(-10)308~(-10)-308。例如:21389.5439d(d可以省略),23189908.987,123.0,6e-140。数据转换涉及逻辑类型和字符类型。整数类型和浮点类型按精度从低到高排列如下:byteshortintlongfloatdouble第2章Android应用层开发语言当把低级别变量的值赋给高级别变量时,系统会自动完成数据类型的转换,例如:int型转换成long型。当把高级别变量的值赋给低级别变量时,必须使用显式转换运算。显示转换的格式如下:(类型名)要转换的值第2章Android应用层开发语言2.1.2复合数据类型1.声明数组声明数组包括数组的名字、数组包含元素的数据类型。声明一维数组时可采用下列两种格式:数组元素类型数组名[];数组元素类型[]数组名;声明二维数组时可采用以下两种格式:数组元素类型数组名[][];数组元素类型[][]数组名;第2章Android应用层开发语言2.创建数组声明数组仅仅是给出了数组名和元素的数据类型,要想使用数组还必须为它分配内存空间,即创建数组。在为数组分配内存空间时必须指明数组的长度。格式如下:数组名字=new数组元素的类型[数组元素的个数];例如:boy=newfloat[4];第2章Android应用层开发语言2.2Java语言的表达式与语句Java表达式是指将运算符及操作元连接起来并符合Java语言规则的式子。一个Java表达式必须能求值,即按照运算符的计算法则计算出表达式的值。例如:如果:intx=1,y=-2,n=10;那么:表达式x+y+(--n)*(xy&&x0?(x+1):y)的结果是int型数据,值为17。第2章Android应用层开发语言Java语句可分为以下几类:(1)方法调用语句:在介绍类、对象等概念的语句中,对象可以调用类中的方法产生行为。(2)表达式语句:在下一个表达式的最后加上一个分号就构成了一个语句,称为表达式语句。分号是语句中不可缺少的部分。例如:赋值语句x=23;第2章Android应用层开发语言(3)复合语句:可以用“{”和“}”把一些语句括起来构成复合语句。一个复合语句也称做一个代码块。例如:{z=23+x;System.out.println(“hello”);}第2章Android应用层开发语言(4)控制语句:包括条件分支语句、循环语句和跳转语句。(5) package语句和import语句:与类、对象有关。(6)分支语句:分为if-else语句和if-elseif-else语句。① if-else语句:由一个“if”、“else”和两个复合语句按一定格式构成,格式如下:if(表达式){若干语句}else{若干语句}第2章Android应用层开发语言② if-elseif-else语句:程序有时需要根据多个条件来选择某一操作,这时就可以使用if-elseif-else语句。if-elseif-else语句由一个“if”、若干个“elseif”、一个“else”与若干个复合语句按一定规则构成。语句的格式如下:第2章Android应用层开发语言if(表达式1){若干语句}elseif(表达式2){若干语句}elseif(表达式n){若干语句}else{若干语句}第2章Android应用层开发语言(7) switch语句:多分支开关语句,它的一般格式如下:switch(表达式){case常量值1:若干语句break;case常量值2:若干语句break;第2章Android应用层开发语言case常量值n:若干语句break;default:若干语句}switch语句中表达式的值必须是整型或字符型;常量值1到常量值n也必须是整型或字符型。第2章Android应用层开发语言(8)循环语句:包括while语句、do-while语句和for语句。①while语句:while语句的一般格式如下:while(表达式){若干语句}第2章Android应用层开发语言while语句的执行规则如下:(Ⅰ)计算表达式的值,如果该值是true,就执行(Ⅱ),否则执行(Ⅲ)。(Ⅱ)执行循环体,再进行(Ⅰ)。(Ⅲ)结束while语句的执行。while语句执行的流程如图2.1所示。第2章Android应用层开发语言图2.1while语句执行流程图表达式循环体truefalse第2章Android应用层开发语言② do-while语句:一般格式为do{若干语句}while(表达式);do-while语句和while语句的区别是do-while语句中的循环体至少被执行一次,如图2.2所示。第2章Android应用层开发语言图2.2do-while语句执行流程图表达式循环体truefalse第2章Android应用层开发语言③ for语句:一般格式为for(表达式1;表达式2;表达式3){若干语句}for语句中的“表达式2”必须是一个值为boolean型数据的表达式。第2章Android应用层开发语言for语句的执行规则如下:(Ⅰ)计算“表达式1”,完成必要的初始化工作。(Ⅱ)判断“表达式2”的值,若“表达式2”的值为true,则执行(Ⅲ),否则执行(Ⅳ)。(Ⅲ)执行循环体,然后计算“表达式3”,以便改变循环条件,执行(Ⅱ)。(Ⅳ)结束for语句的执行。第2章Android应用层开发语言(9)跳转语句:由关键字break或continue加上分号构成的语句。例如:break;一般在循环语句的循环体中使用跳转语句。在一个循环中,如果在某次循环体中执行了break语句,那么整个循环语句结束;如果在某次循环体中执行了continue语句,那么本次循环结束,即不再执行本次循环中循环体中continue语句后面的语句,而转入下一次循环。第2章Android应用层开发语言2.3Java语言的类与对象2.3.1面向对象编程Java语言是一种面向对象的语言,面向对象的核心思想是封装、继承和多态。第2章Android应用层开发语言封装有两层含义:一层含义是把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单位(即对象)中;另一层含义是“信息隐蔽”,即把不需要让外界知道的信息隐藏起来,有些对象的属性及行为允许外界用户知道或使用,但不允许更改,而另一些属性或行为则不允许外界知晓,即只允许使用对象的功能,而尽可能隐蔽对象的功能实现细节。第2章Android应用层开发语言所谓继承,就是子类可以继承父类的属性(数据)和功能(操作)。继承是面向对象方法中的重要概念,并且是提高软件开发效率的重要手段。多态是指程序中允许出现重名现象。Java语言中具有操作名称的多态以及和继承有关的多态。第2章Android应用层开发语言2.3.2Java中的类1.类的声明和类体在语法上,类由两部分构成:类的声明和类体。其基本格式如下:class类名{类体}其中,“class”是关键字,用来定义类。“class类名”是类的声明部分,类名必须是合法的Java语言标识符。两个大括号“{”、“}”以及之间的内容称为类体。第2章Android应用层开发语言例子:classDog{…}类的名字不能是Java语言中的关键字,要符合标识符规定,即名字可以由字母、下划线、数字或美元符号组成,并且第一个字符不能是数字。但给类命名时,最好遵守下列惯例:第2章Android应用层开发语言①如果类名使用字母,那么名字的首字母用大写字母,例如:Hello。②类名最好容易识别、见名知意。③当类名由几个单词复合而成时,每个单词的首字母要大写,例如:BeijingTime、AmericanGame、HelloChina等。第2章Android应用层开发语言2.类体的构成类体中可以有以下两种类型的成员:①成员变量:通过变量声明定义的变量称为成员变量或域,用来刻画类创建的对象的属性。②方法:方法是类体的重要成员之一。其中的构造方法是具有特殊地位的方法,供类创建对象时使用,用来给出类所创建的对象的初始状态;另一类方法可以由类所创建的对象调用,对象调用这些方法来操作成员变量从而形成一定的算法,以体现出对象具有的功能。第2章Android应用层开发语言3.构造方法和对象的创建类中有一部分方法称为构造方法。类在创建对象时需使用构造方法为所创建的对象设置一个合理的初始状态。构造方法是一种特殊的方法,它的名字必须与它所在的类的名字完全相同,并且不返回任何数据类型,即它是void型,但void必须省略不写。第2章Android应用层开发语言4.成员变量用关键字static修饰的成员变量称为静态变量或类变量,而没有使用static修饰的成员变量称为实例变量。例如:下述A类中,x是实例变量,而y是类变量。classA{floatx;//实例变量staticinty;//类变量}第2章Android应用层开发语言5.常量如果一个成员变量修饰为final,就称其为常量。常量的名字习惯用