1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第二章,Java,基础,2.1,标识符和关键字,2.2,数据类型与常量、变量,2.3,运算符和表达式,2.1,标识符和关键字,标识符,标识符是用来标识变量、常量、方法、类、对象等元素的有效字符序列。,Java,的标识符由字母、数字、,_,和,$,组成,长度不限,但实际命名不宜过长。,标识符的第一个字符必须为字母、“,_”,或“,$”,。,标识符区分大小写。,合法的标识符:,name,s_no,$2,boy_number,
2、不合法的标识符:,2y,,,a*b,,,w/,标识符,标识符最好“见名知义”,而且规范大小写的使用方式:,变量名、对象名、方法名、包名等标识符全部采用小写字母;若标识符由多个单词构成,则首字母小写,其后单词的首字母大写,其余字母小写。,如,getAge,。,类名首字母大写。,常量名全部字母大写。,关键字,关键字是由,Java,语言定义的、具有特殊含义的字符序列。每一个关键字都有一定的含义,不能将关键字作为普通标识符来使用。,关键字一律用小写字母表示。,如,boolean,、,break,、,else,等,2.2,数据类型与常量、变量,Java,的数据类型分为,2,大类:,基本数据类型,和,引用
3、数据类型,。基本数据的变量中保存数据值,而引用数据类型的变量保存地址。,Java,数据类型,基本类型,整型,(,int,),浮点型,(float),字符型,(char),布尔型,(,boolean,),引用类型,数组,(array),接口,(interface),类,(class),整数类型,数据类型,所占字节,取值范围,long,(,长整型),8,-,9223372036854775808,9223372036854775807,int,(,整型),4,-,2147483648,2147483647,short,(,短整型),2,-,32768,32767,byte,(,位),1,-,128
4、127,整数类型细分为,4,种子类型。差别在于,数据取值范围的不同,占用的内存空间,整数类型,一个整数的缺省类型为,int,要表示一个整数为,long,型,在其后加后缀,L,或,l,,如,345L,。,Java,还提供了,3,种进制的整数表示形式:,十进制数:,0-9,表示的数,其首位不能为,0,。,八进制数:,0-7,表示的数,以,0,为前缀。如,013,、,027,等,十六进制数:,0-9,、,a-f,或,A-F,之间的字母表示的数,以,0 x,或,0X,为前缀。如,0 xA3,、,0 x1b,等。其中,a-f,或,A-F,分别表示十进制数,10-15,。,浮点数类型,浮点数类型,所占字
5、节,取值范围,float,(,单精度浮点数),4,-,3.4E38,3.4E38,double,(,双精度浮点数),8,-,1.7E308,1.7E308,浮点数表示数学中带小数点的数(实数),浮点数也有,2,种子类型,float,(单精度浮点数)和,double,(双精度浮点数)。,一个浮点数缺省类型为,double,。要表示一个浮点数为,float,型,在其后加后缀,F,或,f,,如,34.5f,。,有,2,种表示形式,标准记数法:由整数部分、小数点和小数部分组成,如,12.3,等,科学记数法:由尾数、,E,或,e,及阶码组成,也称为指数形式,如,2.5E4,表示,2.510,4,,其中,
6、2.5,称尾数,,4,称阶码。,字符类型(,char,),字符类型数据中,1,个字符占,16,位。,表示方法:,用单引号括起来的,单个字符,,如,a,用,Unicode,码表示,前缀是“,u”,,如,“,u0043”,表示,C,Unicide,字符集中的控制字符需要通过转义字符表示。,转义字符,功能,Unicode,码,b,退格,u0008,t,水平制表,u0009,n,换行,u000a,f,换页,u000c,r,回车,u000d,由多个字符组成的字符序列称为字符串,字符串用,双引号,括起来。如,“,green”,、”,onen twon three”,都是字符串。,布尔类型(,boolean
7、布尔类型表示逻辑量,也称逻辑类型,只有,true,(真)和,false,(假),2,个值。,true,和,false,不能转换成任何数字表示的值,即,Java,中的,true,关键字不等于,1,而,false,关键字也不等于,0,。,布尔类型值占,1,个字节。,关键字,数据类型,所占字节,表示范围,long,长整型,8,2,31,-1 -2,-31,int,整型,4,-2147483648 2147483647,short,短整型,2,-3276832767,byte,位,1,-128127,char,字符,1,0256,boolean,布尔,1,true,或,false,float,单
8、精度,4,-3.4E38 3.4E38,double,双精度,8,-1.7E308 1.7E308,Java,数据基本类型表,小结,常量,常量,指在程序运行过程中其值始终保持不变的量。,类似于数学中的“常数”,Java,中的常量有,整型,如,26,浮点数型,如,47.3,字符型,如,a,布尔型,如,true,字符串型。如“,student”,这种表示方式称为,直接常量,。,常量,也可用标识符表示常量,称为,符号常量,。,符号常量必须先声明,后使用。,用关键字,final,声明,方式如下:,final,修饰符,类型标识符 常量名,=,(直接)常量;,修饰符是表示该常量使用范围的权限,如,publ
9、ic,,,private,,,protected,等或缺省。,类型标识符可以是任意的基本数据类型,如,int,、,float,、,char,等,常量名必须符合标识符的规定,并习惯采用大写字母,“,=”,右边的常量值类型必须和类型标识符的类型相匹配,final float PI=3.14159;,/,合法的常量声明,final char SEX=M;,final,int,MAX=100;,变量,变量是指在程序运行过程中其值可以改变的量。,变量必须先定义后使用。其格式为:,修饰符,类型标识符 变量名,=,常量,;,变量名必须符合标识符的规定,并习惯采用小写字母。,声明一个变量,系统必须为变量分配内
10、存单元。分配的内存单元大小由类型标识符决定,如果声明中包含“,=,常量”部分,常量的数据类型必须和变量的类型相匹配。此常量的值作为变量的初始值。,可以声明同类型的多个变量,用逗号分隔。,变量,以下是合法的变量声明:,float x=25.4,y;,char c;,boolean,flag1=true,flag2;,int,b,m;,上例中:,变量,x,和,flag1,被赋予初始值,其它变量没有初始化,Example,2-1,public class Integers,public static void,main(String,args,),int,a=015;/,八进制数,int,b=20;
11、/,十进制数,int,c=0 x25;/,十六进制数,short x=30;,long y=123456L;,System.out.println(a,=+a),;,/,输出值,System.out.println,(,b=+b);,System.out.println(c,=+c);,System.out.println(x,=+x);,System.out.println(y,=+y);,程序运行结果如下:,a=13,b=20,c=37,x=30,y=123456,Example,2-2,public class Floats,public static void,main(String,
12、args,),float a=35.45f;,double b=3.56e18;,System.out.println(a,=+a);,System.out.println(b,=+b);,程序运行结果如下:,a=35.45,b=3.56E18,Example,2-3,public class Characters,public static void,main(String,args,),char ch1=a;,char ch2=B,System.out.println(ch1=+ch1),;,System.out.println(ch2=+ch2),;,程序运行结果如下:,ch1=a,ch
13、2=B,Example,2-4,public class Samp2_5,public static void,main(String,args,),String str1=,abc,;,String str2=n;,String str3=123;,程序运行结果如下:,str1=,abc,str3=123,System.out.println(str1=+str1+str2+str3=+str3);,Example,2-5,public class Logic,public static void,main(String,args,),boolean,instance1=true;,bool
14、ean,instance2=false;,System.out.println,(“,逻辑状态,1=”+instance1+”+”,逻辑状态,2=”+instance2);,程序运行结果如下:,逻辑状态,1=true,逻辑状态,2=false,2.3,运算符和表达式,对数据进行加工和处理称为运算,表示各种运算的符号称为运算符,参与运算的数据称为操作数。,根据操作数的个数,可以将运算符分为单目、双目和多目运算符。单目运算符只对,1,个操作数运算,双目运算符对,2,个操作数运算。,根据操作数和运算结果,运算符分为:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符和括号运算符。,
15、算术运算符,算术运算符完成数学上的加、减、乘、除四则运算。包括双目运算符和单目运算符。,双目算术运算符包括,+,(加)、,-,(减)、*(乘,,运算中“*”一定不能省,必须,a*b,而非,ab,)、,/,(除)和,%,(取余)。,27/3 /,结果是,9,45/4 /,结果是,11,45.0/4 /,结果是,11.25,10.3%3 /,结果是,1.3,9%4 /,结果是,1,-9%4 /,结果是,-1,-9%-4 /,结果是,-1,当“,/”,用于浮点数类型操作数时,得到的是商(除法),而当“,/”,用于,2,个整型操作数时,得到的是商的整数(,整除,),实数求余,结果是实数,而当“,%”,
16、用于,2,个整型操作数时,结果是整数。,取余结果的符号和被除数的符号相同,算术运算符,单目算术运算符包括,-,(负号)、,+,(自增)、,-,(自减),“,+”,和“,-”,用于整数类型的变量,不能用于常量或表达式。,功能:变量的值加,1,(自增)或减,1(,自减),“,+”,和“,-”,可以出现在变量的左边或右边。,例如:,int,j=5;,j+,;,/,相当于,j=j+1,,,j,等于,6,+j;/,结果,,j,等于,7,-j;/,相当于,j=j-1,,,j,等于,6,j-;/,结果,,j,等于,5,在此,“,+”,和“,-”,出现在变量的左边或右边的结果是一样的。,注意:单目运算符的优先
17、级高于双目运算符,而在双目运算符中,先*、,/,、,%,运算,再,+,、,-,运算。,关系运算符,关系运算指,2,个操作数之间的比较运算。,关系运算符有:,、,=,、,=,、,=(,等于,),和,!=(,不等于,),字符类型操作数的比较依据是其,Ascii,码值,如,a,、,=,、,”ac”,是错误的。,“,=”,和“,!=”,可用于布尔类型及字符串类型数。如“,ab,”!=“,abc,”,关系运算符,关系运算的运算结果是布尔类型值。,关系成立,结果的值为,true,;,关系不成立,结果的值为,false,。,6,个关系运算符中,、,=,、,10.4 /,结果是,true,45!=45 /,结
18、果是,false,Ta /,结果是,true,u20)&(ageb),|(97),位运算符,位运算,操作数:整型,运算规则:按二进制的位,运算结果:整型值,位运算符有:,(位反),&,(位与)、,|,(位或),(位异或),(右移)、,(无符号右移),一个正数向左移,n,位,则所得数是原数的,2,n,倍,一个正数向右移,n,位,则所得数是原数的,2,-n,倍,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,将,a,逐位取反,&,a&b,a,、,b,逐位进行“与
19、操作,|,a|b,a,、,b,逐位进行“或”操作,a b,a,、,b,逐位进行“异或”操作,a,ab,a,向右移动,b,位,ab,a,向右移动,b,位,移动后的空位用,0,填充,位运算,Demo,设,x=132,,,y=204,;,计算,x,和,xy,的值,(,1,)将整数转换为二进制数。,x=10000100,,,y=11001100,(,2,)对,x,按位进行取反操作。,10000100,01111011,(,3,)对,x,,,y,按位进行异或操作,10000100,11001100,01001000,(,4,)所得结果:,x=123,,,xy=72,。,赋值运算符,赋值运算用于给变量赋
20、值,形式:,变量名,=,表达式;,赋值运算的次序是从右向左的,即先计算表达式的值,再将表达式的值赋予变量。,例如:,int,i=3,j;/i,的初始值是,3,j=i+2;/j,的结果值是,5,赋值运算符还可以与算术运算符、逻辑运算符和位运算符组合成复合赋值运算符。常用的如下:,运算符,用例,等价于,+=,x+=y,x=x+y,-,=,x,-,=y,x=x,-,y,*=,x*=y,x=x*y,/=,x/=y,x=x/y,%=,x%=y,x=x%y,例如:,x+=8,等价于,x=x+8,y*=x+2,等价于,y=y*(x+2),条件运算符和括号运算符,条件运算格式如下:,表达式,1,?,表达式,2
21、表达式,3,“,?:”,称为条件运算符,它是三目运算符。,如果“表达式,1”,的值是,true,,“表达式,2”,的值是最终表达式的值;如果“表达式,1”,的值是,false,,“表达式,3”,的值是最终表达式的值。,例如:,int,m,x=4,y=20;/,结果使,m,取,x,和,y,中的较小值,,m=(xy)?x:y;/m,的值是,4,括号运算符,括号运算符“()”用于改变表达式中运算符的运算次序。先进行括号内的运算,再进行括号外的运算;多层括号的情况下依次从内向外逐层运算。,表达式,表达式是用运算符将操作数连接起来的符合语法规则的运算式。操作数可以是常量、变量及方法调用。例:,in
22、t,i=5,j=10,k;,k=(24+3*i)*j;,当表达式里有多个运算符中,运算有优先级,顺序为算术运算关系运算逻辑运算条件运算赋值运算。,注意:在表达式中增量和减量运算符的书写位置对运算结果有很大影响,int,i=10;,Int,j=10;,Int,x=i+;,Int,y=+j;,表达式的数据类型由运算结果的数据类型决定。,结果,x=10 y=11 i=11 j=11,Example,2-6,public class,OOperator,public static void,main(String,args,),int,i=15,j1,j2,j2,j4;,j1=i+;,System.o
23、ut.println(“j1=+j1);,j2=+i;,System.out.println(“j2=+j2);,j3=-i;,System.out.println(“j3=+j3);,j4=i-;,System.out.println(“j4=+j4);,System.out.println(i,=+i);,程序运行结果如下:,j1=15,j2=17,j3=16,j4=16,i=15,数据类型的转换,当将一种数据类型的值赋给另一种数据类型的变量时,出现了数据类型的转换。,数值型数据,double,高级别,float,long,int,short,byte,低级别,当将低级别的值赋给高级别的变
24、量时,系统自动完成数据类型的转换。,float x=20;,/,将,20,转换成,float,值,20.0,赋给,x,当将高级别的值赋给低级别的变量时,必须进行强制类型转换。进行强制类型转换时,可能会造成数据精度丢失。,(类型标识符)待转换的值,int,i;,i=(int)24.65;,/,结果,i=24,,造成数据精度丢失,Example,2-6,public class Divide,public static void,main(String,args,),int,i=15,j=4,k;,float f1,f2;,k=,i/j,;f1=,i/j,;f2=(,float)i/j,;,Sys
25、tem.out.println(k,=+k);,System.out.println(f1=+f1);,System.out.println(f2=+f2);,程序运行结果如下:,k=3,f1=3.0,f2=3.75,数据类型的转换,字符类型,Char,类型可自动转换成,int,类型,其值为字符的,Ascii,码值,而,int,类型到,Char,类型需要经过强制类型转换,public class exp00,public static void,main(String,args,),char ch1=a,ch2;,ch2=(char)(ch1-32);,System.,out,.print(c
26、h2);,输出:,A,常用数学函数,java.lang.Math,类提供方法来执行基本数学函数的运算,abs(),方法,:,返回被操作数的绝对值,int,x=Math.abs(50);/,返回,50,float x=Math.abs(-36.8);/,返回,36.8,ceil(),方法,:,返回一个大于等于操作数的最近整数值,Math.ceil(8.2);/,返回,9.0,Math.ceil(-9.9);/,返回,-9.0,floor(),方法,:,返回一个小于等于操作数的最近整数值,Math.floor(8.2);/,返回,8.0,Math.floor(-9.9);/,返回,-10.0,ro
27、und(),方法,:,返回最接近操作数的整数,(,四舍五入,),算法是将操作数加上,0.5,,并截断,Math.round(11.5);/,返回,12,Math.round(-11.5);/,返回,-11,常用数学函数,sqrt,(),方法,:,返回操作数的平方根,其操作数是,double,型的,Math.sqrt(4.0);/,返回,2.0,max(),方法,:,返回两个操作数中较大的一个,Math.max(100.2,203.5);/,返回,203.5,min(),方法,:,返回两个操作数中较小的一个,Math.min(100.2,203.5);/,返回,100.2,random(),方法
28、返回一个,double,型随机数,此方法不带参数,随机数范围:大于等于,0.0,且小于,1.0,产生固定范围内的随机整数:,(,Int,)(,上界,-,下界,+1)*,Math.random,()+,下界,),int,a=(,int)(Math.random,()*10);/,大于等于,0,小于,10,的随机整数,int,b=(int)(89*Math.random()+10);,常用数学函数,sin(),方法,:,返回给定角度的正弦,角度用弧度表示,Math,类提供了数学计算中两个重要的常量,都是,double,Math.PI,:,圆周率常量,其值为:,3.141592653589793,Math.E,:,自然常量,其值为:,2.718281828459045,Math.sin(90*Math.PI/180);/,返回,1.0,cos,(),方法,:,返回给定角度的余弦,(,弧度表示,),Math.cos(180*Math.PI/180);,/,返回,-1.0,exp(),方法:返回常量,E,的,Math.exp(5),/,返回,e5,log(),方法:返回常量,E,为底的自然对数,Math.log(20),/,返回,loge(20),Math.log(20)/Math.log(10),/,返回,lg(20),






