资源描述
第二章,Java,基础,学习目标:,掌握标识符和关键字,熟练使用各种数据类型的定义、表示和引用,掌握算术、逻辑和布尔运算符,自动类型转换和强制类型转换,2.1,标识符,Java,保留字,标识符的命名规则,一定要牢记啊,类名首字母大写;,符号常量名全部字母大写;,变量名、对象名、方法名、包名等标识符全部采用小写字母;如果标识符由多个单词构成,则首字母小写,其后单词的首字母打写,其余字母小写;,合法的标识符,identifier,userName,User_Name_sysval,$change,A98_23,_,abc,非法的标识符,2mailroom#class,A-4,3_1,the,Java,保留字,(,又称,关键字,),关键字不能作为标识符;,关键字是,具有专门的意义和用途,不能当作一般的标识符使用,这些标识符称为保留字,(reserved word),下面列出了,java,语言中的所有保留字:,abstract do implements protected throws,boolean,double import public transient,break else,instanceof,return true this throw,byte extends,int,short try synchronized,case false interface static void continue,catch final long,strictpf,volatile,goto,default,char finally native super while package,class float new switch const for null if private,java,中的关键字均用小写字母表示。,数据类型与常量、变量,数据是计算机程序处理的对象,数据的类型决定了数据的表示方式、取值范围以及可进行的操作。,基本类型包括:,整型,byte,short,int,和,long,浮点型,float,和,double,字符型,char,逻辑型,boolean,引用类型(需要用户自己定义),数组,接口,类,基本数据类型,数据类型名,占用内存空间,数值范围,缺省值,说明,byte,1,字节,(-128),127,0,整,型,short,2,字节,(-32768),32767,0,int,4,字节,(-2147483648),2147483647,0,long,8,字节,(-9223372036854775808),9223372036854775807,0,float,4,字节,0.0,F,浮,点,型,double,8,字节,0.0,D,char,2,字节,字符型,boolean,1,字节,true或false,false,布尔型,类型,长度,范围,byte,8bit,-2,7,2,7,-1,(,-128127,),short,16bit,-2,15,2,15,-1,(,-3276832767,),int,32bit,-2,31,2,31,-1(-,2147483648,2147483647),long,64bit,-2,63,2,63,-1,(-9 223 372 036 854 775 808 9 223 372 036 854 775 807),存储没有小数部分的数据类型,Java,各整数类型有固定的表数范围和字段长度,而不受具体操作系统的影响,以保证,Java,程序的可移植性,1,、整型,数值,20,在内存中的存储形式,00010100,byte,(,1,字节),00000000,00010100,short,(,2,字节)高位置,0,00000000,00000000,00000000,00010100,int,(,4,字节),00000000,00000000,00000000,00000000,00000000,00000000,00000000,00010100,Long,(,8,字节),2,、浮点型,浮点型是带有小数部分的数据类型,包括两种不同的数据类型:,float,和,double,。,float,类型的变量占用,4,个字节(,32,位),,double,类型的数据则需要,8,个字节(,64,位)内存。,在许多程序中,就其表示的数值范围而言,使用,float,类型来存储浮点数已经足够了。,浮点数据有两种表示形式,十进制数形式,必须含有小数点,例如,:,3.14 314.0 .314,科学记数法形式,如,3.14e2 3.14E-12,Java,浮点数据默认为,double,型,如要声明一个常量为,float,型,则需在数字后面加,f,或,F,,,如:,double d=3.14;,float f=3.14,f,;,3,、布尔型(,boolean,),布尔数据类型用于表达两个逻辑状态之一的值:,true,(,真)或,false,(,假)。,布尔型数据只有两个值,true,和,false,,且它们不对应于任何整数值。,布尔型变量的定义如:,boolean,b=true;,4,、字符型,(char),字符型数据类型用于存放,单个字符,,每个字符占用,2,个字节(,16,位)的存储空间。,将一个字符放到一个字符变量中,,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的,Unicode,代码,放到存储单元中。,char c1=t;,char c2=3;,char,基于,Unicode,编码,,u,前缀标志着这是一个,Unicode,值,例如,,u0061,代表字符,a,。,新术语,在,Java,技术中:,变量,=,属性,方法,=,操作,类仍然称作类,所谓类就是一类,属性(变量),和,操作(方法),的描述。其中,,属性可用一系列的,变量,表达,而操作用一系列,方法,表示,。,一类人员,Person,:,抽象出下列属性:名字、年龄、身高、婚否、性别,分别用变量,name,、,age,、,height,、,marriage,、,sex,表示,(见名知义),,,吃饭,讲话,走路等行为可表示为相应的方法,eat(),,,speak(),,,walk(),等。,用,Java,语言描述,Person,类如下:,class Person,/,以下,5,个是变量,String name;,int,age;,double height;,boolean,marriage;,char sex;,speak(),/,方法,eat(),/,方法,对,Person,类中某一特定的人,上述变量就有特定的值,,如,name,(,张三),,age,(,20,),,height,(,1.76,),,marriage,(,false,),,sex,(,m,)。,变量(属性),变量是用来存放指定类型的数据,其值在程序,运行,过程中是可变的。,在使用,Java,中的每个变量之前,都必须对它进行声明。,变量的声明形式如下:,修饰符,类型标识符号,变量名常量,;,变量声明包括指明,变量的数据类型、变量名和作用域,其中,数据类型,说明了这个变量能存放什么样的数据。,变量名,是用来标识该变量的,我们存取变量的内容(变量的值)都是通过,变量名,来实现的。,变量名,在,Java,中用标识符来表示变量名。象,Person,这个类,我们使用了,name,、,age,、,tall,、,marriage,、,sex,这几个标识符,分别定义了五个变量。,程序员应该为变量取有意义的名称,以利于程序的阅读和理解。,(见名知义),但变量取名时还有一些限制:,变量名由字母、数字、下划线或美元符“,$”,组成的,变量名不能以数字作为第一个字符,区分大小写,下面是合法的变量名:,Month,(,不同于,month,),,,student_name,,,class1,,,dollar$,,,$,abc,而下面的变量名都不合法:,3,a46,,,a,b,,,abc,-,d,,,#,ef,.,变量名,变量名中字母大写和小写是有区别的,,name,和,Name,表示两个不同的变量名。,Java,中约定,变量名以小写字母开头,若一个变量名由超过一个单词所组成,则第一个单词之后的所有单词都以大写字母开头,以便于理解该变量名。,例如:,anIntVar,表示一个整型变量。,变量的初始化,赋予变量一个初值,称为变量的初始化。可在定义变量的同时进行变量的初始化,如:,int,anIntVar,=1;,char,aCharVar,=A;,float,aFloatVar,=1.23f;,boolean,aBooleanVar,=true;,也可定义变量后再单独初始化,如:,int,anIntVar,;,char,aCharVar,;,float,aFloatVar,;,boolean,aBooleanVar,;,anIntVar,=1;,aCharVar,=A;,aFloatVar,=1.23f;,aBooleanVar,=true;,两种方法都完成了定义变量:,anIntVar,、,aCharVar,、,aFloatVar,、,aBooleanVar,,,并分别给它们赋初值:,1,、,A,、,1.23,、,true,。,变量的作用域,变量的作用域:变量的使用范围。,假定在某代码段中能够使用一特定变量,则此段代码即是该变量的作用域。,在类中声明的类成员变量,可在该类的各个成员方法中使用;,在某个方法体中或参数表中声明的变量,只能在该方法体中使用;,在某个语句块中声明的变量,只能在该语句块中使用。,变量的作用域,public class,VariableLifeTime,public static void,main(String,args,),int,sum=0,;,int,A=10,;,for(int,x=1;x=5;x+),int,y=0,;,y=,y+A,;,sum=,sum+y,;,System.out.print(x,=+x);,System.out.print(y,=+y);,System.out.println(sum,=+sum);,System.out.println(sum,=+sum);,查看结果:,VariableLifeTime,.java,class Person,/,以下,5,个成员变量,String name;,int,age;,double tall;,boolean,marriage;,char sex;/,以下,2,个方法,eat(String,eatwhat,),System.out.println(name,+”ate up the“+,eatwhat,);,Speak(String,saywhat,,,int,time),int,i;,for(i=0;itime;i+),System.out.println(name,+”,say:”+saywhat,);,变量,name,、,age,、,tall,、,marriage,、,sex,的作用域,变量,i,的作用域,下图为变量作用域的示意图,:,由左图可以看出,变量,name,、,age,、,tall,、,marriage,、,sex,和变量,i,的作用域是不同的。变量,name,、,age,、,tall,、,marriage,、和,sex,的作用域是整个类,在类的方法中也可使用它们。,这种变量称之为,成员变量,。确切地讲,成员变量是在类当中、但不是在其类的方法中定义的变量。,而变量,i,是定义在,speak,方法中,它的作用域仅限于,speak,方法中。这类定义在某方法中的变量叫做,局部变量,。,注意:,同一作用域中不可有同名的变量。如上面的代码在,speak,方法中不能再定义一个名字为,i,的变量,。,在,Java,中嵌套的程序块的内层和外层,不允许定义相同的变量名,否则将导致编译错误。,public class,ScopeError,public static void,main(String,args,),int,E=999,;,int,E=999,;,System.out.println(“E,=+E);,常量,常量是指在程序运行过程中其值不变的量。,定义常量的方法有两种:,(,1,)在定义变量的类型前面加,final,关键字,并同时进行初始化,如下所示:,final,int,aFinalVar,=0;,final double PI=3.14159;,(,2,),在定义变量的类型前面加,final,关键字,不进行初始化。通过另外的语句进行赋值。如下所示:,final,int,aFinalVar,;,aFinalVar,=0;,常量和变量,常量与变量之间最根本的区别是:常量在经过定义并给它一个值之后,不能再对它进行修改。而变量则无此限制。,对于常量,a,,,进行如下的操作是错误的:,final,int,a=1;,.,a=2;,而对于变量,a,,,如下这段代码则是正确的。,int,a=1;,a=2;,示例:,public class Assign,public static void main(String ,args,),int,x;,int,y;,/,定义,x,y,两个整型变量,float z=1.234f;,/,指定变量,z,为,float,型,且赋初值为,1.234,double w=1.234;,/,指定变量,w,为,double,型,且赋初值为,1.234,boolean,flag=true;,/,指定变量,flag,为,boolean,型,且赋初值为,true,char c;,/,定义字符型变量,c,String,str,;,/,定义字符串变量,str,String str1=Hi ;,/,指定变量,str1,为,String,型,且赋初值为,Hi,c=A ;,/,给字符型变量,c,赋值,A,str,=bye ;,/,给字符串变量,str,赋值,bye,x=12;,/,给整型变量,x,赋值为,12,y=x;,/,给整型变量,y,赋值为,12,2.3,运算符和表达式,运算符分类,依据操作数的个数:单目运算符(一元运算符)、双目运算符(二元运算符)、多目运算符。,根据操作数和运算结果分为:算术、关系、逻辑、位运算符、赋值运算符、条件运算符、括号运算符。,1,、算术运算符:,运算符优先级别,优先级规则:,(),乘除(从左到右),加减(从左到右),复杂的表达式:,C=25-5*4/2-10+4,;,从左到右的规则求值,结果是:,34,按照优先级规则求值,结果是:,9,用()来表述想要的结构,2,、关系运算符:,3,、逻辑(布尔)运算符:,逻辑(布尔)运算真值表:,a,b,!a,a&b,,,a&b,a|b,,,a|b,ab,false,false,true,false,false,false,false,true,true,false,true,true,true,false,false,false,true,true,true,true,false,true,true,false,条件与(短路与),条件或(短路或),4,、位运算符:,a,b,a,a&b,a|b,ab,0,0,1,0,0,0,0,1,1,0,1,1,1,0,0,0,1,1,1,1,0,1,1,0,位运算是对整数类型的操作数按二进制的位进行运算,运算的结果仍然是整数类型值。,位运算真值表,位移运算符,a,ab,a,向右移动,b,位,ab,a,向右移动,b,位,空位填,0,位移运算举例,运算符,:,将操作数的二进制位左移,高位溢出,低位补。,如,int,b=13;,b=b,运算符,:,将操作数的二进制位右移,低位溢出,高位补充原来高位的值。,如,int,b=60;,b=b1;(,此时,b,的值为,30,,,二进制右移一位相当于该数除?,)考虑若,b=-60,b=b1,b?,运算符,:,将操作数的二进制位右移,低位溢出,高位补,0,。,5,、赋值运算符及条件运算符:,赋值运算符的形式:,变量名,=,表达式;,复合赋值运算符,x+=y,x=,x+y,x/=y x=,x/y,条件运算符,的形式:,表达式,1,?表达式,2,:表达式,3,举例,int,min,x,=4,y=20;,min=(x,高,byte,short,char,-,int,-long-float-double,高级数据类型要转换成低级数据类型,需要用到强制类型转换。,其一般形式为:,(,类型名,)(,表达式,),如:,int,i,;,byte b,;,i=356,;,b=,(,byte,),i,;,/,强制转换后丢失一部分数据,使得,b,的值为,100,。,一般使用强制类型转换可能会导致数值溢出或精度的下降,应尽量避免。,
展开阅读全文