Java程序设计基础教程——第二章java基本程序设计结构第2章Java基本的程序设计结构标识符和关键字Java的基本数据类型运算符、表达式和语句语句输入输出数组2.1标识符和关键字在Java中的标识符和关键字统称为保留字。标识符是赋予类、常量、变量、方法、包或者接口的名称。2.1.1标识符标识符可以自定义,要符合以下规则:1、可包含数字、字母、下划线_或$,但不能以数字开头。2、区别大小写,但长度没有限制3、关键字不能做为标识符使用4、遵守JAVA的命名规范,1)类名称的每个单词都以大写字母开头。2)方法和变量第一个字母不大写,其他字母开头大写。3)常量每个字母都大写。4)包名都小写。2.1.2关键字具有特殊的意义和用途,不能作为自定义标识符。Java的关键字有:Abstract、default、if、package、for、null、this、Boolean、do、implements、private、throw、Break、double、import、protected、throws、Byte、else、instanceof、public、transient、Case、false、interface、short、try、Catch、final、long、static、void、Char、finally、native、super、volatile、Class、float、new、switch、while、Continue、synchronizedgoto和const在Java中虽然不再使用,但是还作为关键字存在。2.2Java的基本数据类型类型内容默认值内存空间取值范围booleantrue/falsefalse16位true或falsecharUnicode\u000016位\u0000~--\uFFFFbyte整数08位-128~+127short整数016位-32768~+32767int整数032位-2147483648~+2147483647long整数064位-9223372036854775808~+9223372036854775807float浮点0.032位±3.40282347E+38~±1.40239846E-45double浮点0.064位±1.79769313486231570E+308~±4.94065645841246544E-324用十进制表示是多大?2.2.1布尔型布尔型,使用关键字boolean来定义逻辑变量,值为常量:true、false。【例2-1】一个布尔型应用的示例。P222.2.2字符型Java中由于使用的是unicode编码,所以一个字符占16位。charch1,ch2;ch1=65;ch2='B';java转义符:某些控制符和需转义的字符\b退格键\t制表符\n换行\”双引号\’单引号\\反斜杠控制符转义符2.2.3整数型Java定义了四种整数型,即byte(字节型),short(短整型),int(整型),long(长整型)。在Java语言中所有的数都为有符号数。整型常量:1236000770x23A2.2.4浮点型浮点型,float单精度数占4个字节,double双精度数占8个字节浮点型常量;单精度:123.45f123F23e2f双精度:123.45123d23e22.2.5基本数据类型的转换在Java中类型精度由低到高的顺序为:byte、short、char、int、long、float、double1、自动转换:当由低到高时可以自动转换byteb;inti=b;longl=b;floatf=b;doubled=b;byte、short、char是平级,必须使用强制转换。2、强制转换:由高级到低级时,必须强制转换inti=99;byteb=(byte)i;charc=(char)i;publicclassChangeTest{publicstaticvoidmain(Stringargs[]){byteb=15;inti=b;floatf=b;doubled=b;System.out.println(i);System.out.println(f);System.out.println(d);ints=199;byten=(byte)s;doublet=12.3;s=(int)t;System.out.println(n);System.out.println(s);}}注意:在强制转换时有时会导致溢出或降低精度,如果整型值大了,会自动取模再赋值,而浮点数赋值给整数时会去掉小数点。1515.015.0-5712例2-7P26|例2-6P252.3运算符、表达式Java提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符、位运算符等。2.3.1算术运算符与算术表达式在Java中提供运算功能的就是运算符(Operator),例如与算术相关的有加(+)、减(-)、乘(*)、除(/)、取模运算符(%)。算术运算符的使用基本上与加减乘除一样,也是先乘除后加减,必要时加上括号改变运算的先后顺序。3/15=?15%(-6)=?-15%6=?(-15)%6=?2.3.2比较和条件运算“比较运算符”有大于()、大于等于(=)、小于()、小于等于(=)、等于(==)和不等于(!=)。在Java中,比较条件成立时以true表示,比较条件不成立时以false表示。对于对象来说,两个对象参考之间使用==作比较时,是比较其名称是否参考至同一对象,而不是比较其内容。“条件运算符”使用方式如下:条件式?成立返回值:失败返回值返回值依条件式的结果而定,如果条件式的结果为true,则返回冒号前的值;若为false,则返回冒号后的值。2.3.3逻辑和位运算Java中也提供这几个基本逻辑运算所需的逻辑运算符分别为与(&&)、或(||)和取反(!)3个运算符。2.3.4递增和递减运算递增、递减与赋值运算符,这几种运算符的目的除了让程序看来比较简洁之外,还可以稍微增加一些程序执行的效率。publicclassIncrementDecrement{publicstaticvoidmain(String[]args){inti=0,d;System.out.println(d=++i);System.out.println(--i);}}2.3.5赋值运算符到目前为止,只学习过一个赋值运算符,也就是=这个运算符,事实上赋值运算符还有其他几个,如表2-2所示。赋值运算符范例结果+=a+=ba=a+b-=a-=ba=a-b*=a*=ba=a*b/=a/=ba=a/b%=a%=ba=a%b&=a&=ba=a&b|=a|=ba=a|b^=a^=ba=a^b=a=ba=ab=a=ba=ab表2-2赋值运算符2.4语句在Java语言中,语句可分为以下5类:1.方法调用语句System.out.println(“Hello”);2.表达式语句由一个表达式构成一个语句,如:x=23;一个表达式加上一个分号就构成了一个语句3.复合语句用{}把一些语句括起来构成复合语句,如:{z=23+x;System.out.println(“Hello”);}4.控制语句包括控制语句if、for和switch等语句。5.package语句和import语句Package语句和import语句与类、对象有关,相关内容在第3章中介绍。2.4.2结构控制语句Java的分支语句有2种类型,即if条件语句和switch开关语句。1.if条件控制语句if(条件式)语句1;else语句2;if(条件式){语句1;语句2;}else{语句3;语句4;}importjava.util.Scanner;publicclassOddDecider{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);System.out.print(请输入数字:);intinput=scanner.nextInt();intremain=input%2;//求除2的余数if(remain==1)//如果余数为1System.out.println(input+为奇数);elseSystem.out.println(input+为偶数);}}2.switch开关语句switch只能比较整型或字符型,比if判断式更简洁switch的语法结构如下:switch(变量名称或表达式){case表达式1:语句1;break;case表达式2:语句2;break;default:语句3;}importjava.util.Scanner;publicclassScoreLevel2{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);System.out.print(请输入分数:);intscore=scanner.nextInt();intlevel=(int)score/10;switch(level){case10:case9:System.out.println(得A);break;case8:System.out.println(得B);break;case7:System.out.println(得C);break;case6:System.out.println(得D);break;default:System.out.println(得E(不及格));}}}2.4.3循环语句1.for循环在Java中如果要进行重复性的指令执行,可以使用for循环式。它的基本语法如下:for(初始式;判断式;递增式){语句1;语句2;}【例2-22】for循环的功能示例。publicclassSimpleLoopFor{publicstaticvoidmain(String[]args){for(inti=0;i10;i++)System.out.print(+i);}}2.while循环Java提供while循环式,它可以根据所指定的条件式来判断是否执行循环体。语法如下:while(条件式){语句1;语句2;}3.do-while循环Do{语句体;}while(逻辑表达式)Inti=3;do{…}while(i--)//编译可通过吗?【例2-25】计算输入成绩平均的程序。importjava.util.Scanner;publicclassScoreAverage{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);intscore=0;intsum=0;intcount=-1;while(score!=-1){count++;sum+=score;System.out.print(输入分数(-1结束):);score=scanner.nextInt();}System.out.println(平均:+(double)sum/count);}}Scanner用法举例功能:默认以空格分隔并按预定义的类型解析串成token常用构造方法Scanner(Filesource)Scanner(InputStreamsource)Scanner(Stringsource)常见方法:StringfindInLine(Patternpattern)hasNext()hasNextBoolean()hasNextByte()hasNextDouble()hasNextFloat()hasNextLine()nextInt()nextBoolean()nextLine()nextShort()useDelimiter(Stringpattern)intdata;intsu