第三章 java 运算符、表达式与语句

上传人:M****1 文档编号:567943584 上传时间:2024-07-22 格式:PPT 页数:113 大小:494KB
返回 下载 相关 举报
第三章 java 运算符、表达式与语句_第1页
第1页 / 共113页
第三章 java 运算符、表达式与语句_第2页
第2页 / 共113页
第三章 java 运算符、表达式与语句_第3页
第3页 / 共113页
第三章 java 运算符、表达式与语句_第4页
第4页 / 共113页
第三章 java 运算符、表达式与语句_第5页
第5页 / 共113页
点击查看更多>>
资源描述

《第三章 java 运算符、表达式与语句》由会员分享,可在线阅读,更多相关《第三章 java 运算符、表达式与语句(113页珍藏版)》请在金锄头文库上搜索。

1、第三章 Java实用技术 运算符、表达式与语句n运算符的作用是与一定的运算数据组成表达式来完成相应的运算。对不同的数据类型,有着不同的运算符。对运算符,有运算对象(操作数)个数及类型、运算优先级、结合性等特性。nJava语言对运算符的优先级、结合性和求值顺序有明确的规定,从根本上消除了运算符运算过程的二义性以及结果不统一的弊端。n运算符的优先级是指不同运算符在混合运算中执行的先后顺序。在Java语言中共有17种优先级,每个运算符分属确定的一个优先级别。Java语言严格按照运算符的优先级由高到低地顺序执行各种运算。n运算符的结合性确定同级运算符的运算顺序。左结合性规定,运算数据先与左边的运算符结

2、合,然后与右边的运算符结合。右结合性正好相反。n3. 1 算术运算符n算术运算符按操作数的多少可分为一元(或称单目)和二元(或称双目)两类,一元运算符一次对一个操作数进行操作,二元运算符一次对两个操作数进行操作。算术运算符的操作数类型是数值类型。n1一元算术运算符运 算 符实际操作例 子功 能+正值负号加1减1+xxx+,+xx,x对x取负将x的值加1后再放回变量x将x的值减1后再放回变量x表表3-1一元算术运算符一元算术运算符前置运算:+、-位于操作数前,如+x; -x;n对前置运算变量先操作后引用后置运算:+、-位于操作数后,如x+; x-;n对后果置运算变量先引用后操作int a=10,

3、b; b = a+; /a=11,b=10int x=10,y; y = -x; /x=9, y = 9n2二元算术运算符n算术运算符的第二种类型是二元运算符,这种运算符并不改变操作数的值,而是返回一个必须赋给变量的值。表3-2列出了二元算术运算符。二元算术运算符具有左结合性。运 算 符实际操作例 子功 能+*/%加运算减运算乘运算除运算取模运算a+baba*ba/ba%b求a与b相加的和求a与b相减的差求a与b相乘的积求a除以b的商求a除以b的余数表表3-2二元算术运算符二元算术运算符n双目运算符+、-、*、/,如两个操作数都是整型,则结果是整型;否则是实型。5/2结果是2而不是2.5。n%

4、运算符可用于求整数或实数除的余数。例: int a=7;int b=2; a/b=3 /整除a%b=1 /取余n注意:算术运算符的总体原则是先乘除、再加减,括号优先。整数除法会直接去掉小数,而不是进位。对取模运算符%来说,其操作数可以为浮点数。如:37.2%10=7.2。Java对加运算符进行了扩展,使它能够进行字符串的连接,如“Hello+“World,得到串“HelloWorld“.n3.算术表达式n用算术符号和操作元连接起来的符合java语法规则的式子,称为算术表达式。n例如: x+2*y-30+3*(y+5)-12+(-n)n算术混合运算的精度按表达式中精度最高的计算char+int

5、= int, char ch = (char)(H+k);n3.2 关系运算符n关系运算符用于确定一个数据与另一个数据之间的关系,即进行关系运算。所谓关系运算是比较运算,将两个值进行比较。关系运算的结果值为true或false(布尔型)。表3-3列出了Java语言提供的6种关系运算符,它们都是双目运算符。n在这里要指出的是,等于运算符=不要与赋值运算符=混淆,以至于关系运算变成了赋值运算。运 算 符实际操作例 子=!=小于大于小于或等于大于或等于等于不等于aba=ba=ba!=b表表3-3关系运算符关系运算符n关系表达式n通过关系运算符形成的表达式n例如: 2418,(x+y+z)30+xn3

6、.3 逻辑运算符n逻辑运算符可以对布尔类型的数据(布尔常量、布尔变量、关系表达式和逻辑表达式等)进行运算,结果也为布尔类型。表3-4列出了Java语言的逻辑运算符,逻辑运算规则如表3-5所示。运 算 符名 称例 子功 能!非!a对布尔数据a取非&非简洁与a&b对布尔数据a和b进行非简洁与运算|非简洁或a|b对布尔数据a和b进行非简洁或运算异或ab对布尔数据a和b进行异或运算&简洁与a&b对布尔数据a和b进行简洁与运算|简洁或a|b对布尔数据a和b进行简洁或运算表表3-4布尔运算符布尔运算符ab!aa&ba&ba|ba|babfalsefalsetruefalseflasefalsefalset

7、ruetruefalsetruetruetruefalsefalsefalsetruetruetruetruefalsetruetruefalse表表3-5逻辑运算真值表逻辑运算真值表n逻辑运算符:!(非),&(与),|(或)n逻辑运算符要求的操作数和结果值都是布尔型,即返回布尔类型的值true或false。n&短路运算:若&左边表达式的值为false,则不对运算符右边的表达式再进行运算,表达式的结果为false。n |的短路运算:若|左边的表达式的值为true,则不对运算符右边的表达式再进行运算,表达式的结果为true例:boolean x = false; (35) & (x=53) /表

8、达式结果为false, x为false; boolean x = true; (53) | (x=35) /表达式结果为true, x为true.n逻辑表达式n由逻辑运算符构成的表达式24 18 & 18 24n3.4 赋值运算符n赋值运算符都是二元运算符,具有右结合性。n1简单赋值运算符(=)n2复合赋值运算符 复合赋值运算符的右边是一个整体。 表3-6中的表达式是等价的。 运 算 符用 法等 价 于+=-=*=/=%=op1+=op2op1=op2op1*=op2op1/=op2op1%=op2op1=op1+op2op1=op1op2op1=op1*op2op1=op1/op2op1=o

9、p1%op2&=op1&=op2op1=op2op1=op2op1=op2op1=op2op1=op1&op2op1=op1op2op1=op1op2op1=op1op2op1=op1op2表表3-6复合赋位运算符复合赋位运算符n3.5 位运算符n位运算符用来对二进制位进行运算,运算操作数应是整数类型,结果也是整数类型。表3-7列出了Java的位运算符。 运 算 符实际操作例 子功 能按位取反a对a按二进制每位取反|与运算或运算异或运算左移算术右移逻辑右移aba|hababab对a和b按二进制位每位进行与运算对a和b按二进制位每位进行或运算对a和b按二进制位每位进行异或运算对a左移b位,低位用

10、0填充对a右移b位,高位用原高位重复对a右移b位,高位用0填充表表3-7位运算符列表位运算符列表abaa&ba|bab001000011011100011110110表表3-8位运算真值表位运算真值表nJava 用补码补码表示二进制数 X 补= 符号位0 + X X 0 X 补= 000000 X = 0 X 补= 按位取反+1 X 0n1 的补码表示(4个字节)00000000 00000000 00000000 00000001n-1 的补码表示(4个字节) 11111111 11111111 11111111 11111111(4)位运算符(续一)运算符示例含义 &Op1 & Op2使O

11、p1和Op2按位相与|Op1 | Op2使Op1和Op2按位相或Op对Op按位取反Op1 Op2使Op1和Op2按位异或Op1 Op1 Op2使Op1右移Op2位(带符号,左边补补充充充充符号位符号位符号位符号位)Op1 Op2使Op1无符号右移Op2位(左边始终补添添0)(4)位运算符(续二)n按位与运算(&)(全1得1,有0得0)n参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。即:0&0=0,0&1=0,1&0=0,1&1=1 例: a: 00000000 00000000 00000000 00000111& b: 10000001 10100101 1111001

12、1 10101011 c: 00000000 00000000 00000000 00000011 (4)位运算符(续三)n按位或运算(|) (有1得1,全0得0)参与运算的两个值,如果两个相应位都是0,则该位结果为0,否则为1。n即:0|0=0,0|1=1,1|0=1,1|1=1n例:若a=1;b=2;则a|b=3。n按位异或运算() (相异得1,相同得0)参与运算的两个值,如果两个相应位的某一个是1,另一个是0,那么按位异或()在该位的结果为1。也就是说如果两个相应位相同,输出位为0,否则为1。n即:00=0,01=1,10=1,11=0n例:若a=1;b=2; 则ab=3。 (4)位运算

13、符(续四)n按位取反运算()属于一元运算符,它只对一个自变量进行操作。按位取反生成与输入位相反的值,若输入0,则输出1;输入1,则输出0。即:0=1,1=0例:若a=4;则a=-5。n左移位运算符()运算符执行一个左移位。作左移位运算时,右边的空位补0。在不产生溢出的情况下,数据左移1位相当于乘以2。例:int a=64,b; b=a与)算术右移运算符执行一个右移位(带符号),左边按符号位补0或1。n例:int a=16,b; b=a2;/b=4逻辑右移运算符是0填充的右移,它执行的是不带符号的移位。n即对以补码表示的二进制数操作时,在带符号的右移中,右移后左边留下的空位中添入的是原数的符号位

14、(正数为0,负数为1);在不带符号的右移中,右移后左边留下的空位中添入的一律是0。 (4)位运算符(续六)n注意事项在移位运算中,nint类型,实际移位数 = 第2个操作%32nlong类型,实际移位数 = 第2个操作%64n思考练习8 328 348 648L66位右移和左移程序 异或加密解密 /结果是结果是8 /结果是结果是2 /结果是结果是8 /结果是结果是2n3.6 条件运算符n条件运算符是一种三元运算符,它的格式如下: Operand? Expression1:Expression2n在这个式子中,先计算Operand的真假,若为真,则计算并返回Expression1,若为假,则计算

15、并返回Expression2。例如; (ab)?a:b;n这个表达式将返回a和b中较大的那个数值。n3.7 字符串运算符n运算符“+”可以实现两个或多个字符串的连接,也可实现字符串与其他类对象的连接,在连接时,其他类对象会被转换成字符串。另外,运算符“+=”把两个字符串连接的结果放进第一个字符串里。 3.8 表 达 式 n表达式是由操作数和运算符按一定的语法形式组成的符号序列。n3.8.1 类型转换n在一个表达式中可能有不同类型的数据进行混合运算,这是允许的,但在运算时,Java将不同类型的数据转换成相同类型,再进行运算。 n1自动类型转换类 型 1类 型 2转换后的类型byte或shortb

16、yte或short或intbyte或short或int或longbyte或short或int或long或floatcharintlongfloatdoubleintintlongfloatDoubleint表表3-9不同类型数据之间的转换规则不同类型数据之间的转换规则n2强制类型转换源 类 型目标类型byteshortcharintlongfloatshort,char,int,long,float,doubleint,long,float,doubleint,long,float,doublelong,float,doublefloat,doubledouble表表3-10不会丢失信息的类型

17、转换不会丢失信息的类型转换n3表达式求值中的自动类型提升nJava语言对表达式求值的自动类型提升规则如下。n 所有byte和short类型提升为int类型。n 若一个操作数是long类型,则整个表达式提升为long类型。n 若一个操作数是float类型,则整个表达式提升为float类型。n 若有double类型,则表达式值为double类型。n自动类型提升对数据的运算带来了方便,但也容易引起编译错误。n3.8.2 优先级优 先 次 序运 算 符1234567 ()+ - ! instanceofnew,(type)即强制类型转换* / %+ =89101112131415= !=& 按位与和非

18、简洁与 按位或和非简洁或&?:= += = *= /= %= =&= = = =表表3-11运算符优先级运算符优先级3.9 语句和块n1语句n在Java语言中,有下面几类语句:空语句、标识语句、声明语句、表达式语句、分支语句、循环语句、跳转语句、同步语句和异常语句等。有两种基本的语句:表达式语句和声明语句。(1)表达式语句n 赋值表达式,包含赋值运算符=或复合赋值运算符之一。n +或的前后缀形式。n 方法调用(无论它是否有返回值)。n 对象创建表达式,用new来创建一个对象的表达式。(2)声明语句 例如:int a;2块n用一对花括号“”将零个或多个语句括起来,就构成一个块(也称复合语句)。在

19、块中允许包含另一个块(块嵌套)。在Java语言中,允许一个块出现在任何单一语句可以出现的地方。n块体现了Java面向对象程序设计的封装概念,在一个块中声明的局部变量的作用域是该变量的声明开始点到最小的包含其声明的块结束。3.10 instanceof运算符nInstanceof是双目运算符,左面的操作元是一个对象,右面是一个类。当左面的对象是右面的类创建的对象时,该运算结果为true,否则为false。3.11 常用Java数值计算方法 n在Java的类Math中包含了一些数值常量,如E和PI,以及一些基本的数值计算方法,如指数、对数、平方根和三角函数等,为用户程序进行数值计算带来了方便。表3

20、-12列出了一些常用的数值计算方法。方 法功 能参数类型返回类型abs(a)求a的绝对值(l)(1)sin(a)求a(弧度)的正弦值doubledoublecos(a)求a(弧度)的余弦值doubledoubletan(a)求a(弧度)的正切值doubledoubleasin(a)求a的反正弦值doubledouble表表3-12类类Math中常用的数值计算方法中常用的数值计算方法方 法功 能参数类型返回类型acos(a)求a的反余弦值doubledoubleatan(a)求a的反正切值doubledoubleceil(a)求不小于a的最小整数doubledoublerint(a)求最接近a的

21、整数doubledoubleexp(a)求e的a幂次doubledoublefloor(a)求不大于a的最大整数doubledoublepow(a,b)求a的b次方doubledoublerandom()产生0.01.0的伪随机数doubledoublesqrt(a)求a的平方根doubledoublelog(a)求a的自然对数doubledoublemax(a,b)求a,b中的大者(l)(1)min(a,b)求a,b中的小者(l)(1)续表续表n分支结构又称为选择结构,是在两种或两种以上的多条执行路径中选择一条执行的控制结构,选择语句提供了一种控制机制,使得程序根据相应的条件去执行对应的语句

22、。3.11 分支语句n(1)if-else语句 n单分支: if (condition) statement; 控制流程:先对condition的值进行判断,若condition的值为true,则程序执行语句statement,否则就转去执行if语句的后续语句。 (1)if-else语句n双分支:if (condition ) statement1;elsestatement2; n控制流程:先对condition的值进行判断,condition的值为true,则程序执行语句statement1,否则执行语句statement2。(1)if-else语句n多分支/if嵌套 if(conditi

23、on1) statement1; else if (condition2) statement2; else if(condition3) statement3;.else statementN; n最近未匹配原则:即else总与离它最近的尚未匹配的if相匹配。 流程图结构流程图结构 n选择语句选择语句 语法格式语法格式1if (条件表达式条件表达式) 语句或语句序列;语句或语句序列;条件表达式条件表达式语句序列语句序列truefalsen选择语句选择语句 语法格式语法格式2if (条件表达式条件表达式) 语句或语句序列语句或语句序列1;else 语句或语句序列语句或语句序列2;条件表达式条件

24、表达式语句序列语句序列2truefalse语句序列语句序列1n选择语句选择语句 语法格式语法格式3if (条件表达式条件表达式1) 语句或语句序列语句或语句序列1;else if (条件表达式条件表达式2) 语句或语句序列语句或语句序列2;else 语句或语句序列语句或语句序列n;选择语句应用举例选择语句应用举例n例3-3(2)switch语句 nswitch语句的一般格式如下: switch (表达式) case : ; break;case : ; break; . . case : ; break; default: ; break; switch注意事项nswitch表达式与case常

25、量表达式的类型必须是整形或字符型的 ,不能是关系表达式和逻辑表达式。n使用switch语句时,需要注意的是:n 各个case后的常量值value应各不相同。n 通常在每一种case情况后都应使用break语句,否则,遇到第一个相等情况后,下面break前的所有语句都会被执行(包括default后面的语句,若有的话)。n 各个分支的statement可以是一条或多条语句,不必使用复合语句。n 不同case后的语句statement相同时,可以合并多个case子句。n switch语句在用表达式的值比较每一个case后的值value时,是从前往后顺序进行的。若各个值value互不相同,则case子

26、句的顺序可任意。Switch语句例题n例3-4n一个循环一般包括4个部分:n 初始化部分,用来设置循环的一些初始条件,如累加器清零等;n 循环体部分,重复执行的一段程序,可以是一条语句,也可以是一块语句;n 循环条件变更部分,在本次循环结束,下一次循环开始前执行的语句。常用形式为一个计数器值的增减;n 终止部分,一般为布尔表达式,每一次循环都要对该表达式求值,以检查是否满足循环终止条件。3.12 循环语句n(1)while语句 (当型循环)while(条件表达式) 循环体语句; n控制流程:先判断条件表达式的值,当条件表达式的值为true,则执行循环体,然后再判断条件,直到条件表达式的值为fa

27、lse,停止执行语句。n注:while语句的循环体可能一次也不会执行; while语句可能陷入“死循环”。(2) do-while 语句(直到型循环) do 循环体语句; while (条件表达式); n控制流程:先执行一次循环体中的语句,然后测试布尔表达式的值,如果布尔表达式的值为真,那就继续执行循环体,do-while语句将不断地测试布尔表达式的值并执行循环体中的内容,直到布尔表达式的值为假为止。n注:do-while语句的循环体至少执行一次。另外do-while语句是可以与while语句互换的。n循环语句循环语句 while语法格式语法格式while(条件表达式条件表达式) 语句序列语句

28、序列do-while语法格式语法格式do 语句序列语句序列while(条件表达式条件表达式);While循环例题n例3-5(3)for 语句 for (表达式1; 表达式2; 表达式3) statements; n说明:表达式1是初始条件,是为循环变量置初值,它在循环开始的时候执行一次。表达式2是终止条件,决定循环是否继续,该条件表达式在每次循环的时候均作判断,若结果为false,则循环结束;表达式3是增量,用来修改循环变量,控制变量每循环一次后按什么方式变化。 (3)for 语句nfor语句中循环控制变量必须是有序类型,常用的有整型、字符型、布尔型。循环控制变量初值和终值通常是与控制变量类型

29、相一致的一个常量,也可以是表达式。循环次数由初值和终值决定。nfor语句的执行过程如下:按表达式1将初值赋给循环控制变量。按表达式2判断控制变量的值是否越过终值,未越过终值则转,越过终值则转步骤。执行循环体。按表达式3修改控制变量。返回。结束循环。 n4循环嵌套n循环嵌套是指在某个循环语句的循环体中又包含另一个循环语句,也称多重循环。外面的循环语句称为“外层循环”,外层循环的循环体中的循环称为“内层循环”。n循环语句循环语句 for语法格式语法格式for(表达式表达式1;表达式;表达式2;表达式;表达式3) 语句序列语句序列for语句应用举例语句应用举例n例例3-6 3.13 跳转语句nJav

30、a提供了break、continue和return 三个跳转语句。 n1break语句break语句常用于提前从循环退出或跳过switch结构的其余部分。 break ; 此时,break语句的功能是终止break所在的循环,转去执行其后的第一条语句,其特点:一是在有多重循环时,它只能使循环从本层的循环跳出来;二是此时程序一定转移到本层循环的下一个语句。用break语句终止swtich语句,控制流程会马上转到switch语句下方的语句。 2continue 语句 ncontinue语句在while、for或do/while结构中执行时跳过该结构体的其余语句,进入下一轮循环。 continue

31、; 用于跳过当前的for、while或者do-while循环,即跳过循环体中continue语句后面的语句,回到循环体的条件测试部分继续执行。只能跳过本次循环的剩余语句。3、 Return语句nreturn语句用来明确地从一个方法返回,如果使用return语句返回一个值,其格式如下:return 表达式;class Test public static void main(String args) boolean t = true; System.out.println(Before the return.); if (t) returnreturn; System.out.println(T

32、his wont execute.); 跳转语句例题n例3-7n例3-8谢谢!条件选择语句nif 语句1.if语句是一个条件表达式,若条件表达式为真,则执行下面的代码块,否则跳过该代码块2.单行代码if (布尔表达式) 语句;2.多行代码if (布尔表达式) ;语句;语 句布尔表达式falsetrue流程图条件选择语句n示例import java.io.IOException;public class test3public static void main(String args) throws IOException System.out.println(你喜欢javaa);char li

33、ke = (char)System.in.read();if (like =Y| like=y) System.out.println(good);条件选择语句nif-else 语句1.根据判定条件的真假执行不同的操作2.语法if (布尔表达式) 语句块1; else 语句块2;语句块1布尔表达式falsetrue流程图语句块2条件选择语句n示例import java.io.IOException;class Test public static void main(String args) throws IOException System.out.println(“请输入你的成绩: );c

34、har a = (char)System.in.read();char b = (char)System.in.read();int score = (a-0)*10 + b-0;if (score = 60)System.out.println(“你及格了!”);elseSystem.out.println(“你没及格了!”);C:java Test请输入你的成绩:65你及格了!C:条件选择语句nif 语句的嵌套1.if 语句中的语句块又出现了if 语句2.若没有配对符,则else与最近的if语句配对3.例 int a=1, b=2, c=3;if (ac) if (cb) System.o

35、ut.print( c ); else System.out.print(a);4.一定要明确地写上配对符修改配对关系: if (ac) if (cb) System.out.print( c ); else System.out.print(a); 默认Java虚拟机: if (ac) if (cb) System.out.print( c ); else System.out.print(a); 条件选择语句n条件运算符1.三元运算符(ternary operator): “? : ”2.表达式1 ? 表达式2 : 表达式33.表达式1的结果为布尔型,表达式2和表达式3的类型相同表达式1t

36、rue表达式2表达式1false表达式3Shortcut if-else statement if (表达式1) 表达式2 else 表达式3条件选择语句n示例import java.io.IOException;class Test public static void main(String args) throws IOException System.out.println(“请输入三个09之间的数); byte x = (byte)System.in.read(); byte y = (byte)System.in.read(); byte z = (byte)System.in.r

37、ead(); x -= 48; y -= 48; z -= 48; byte n = xy? x : y; byte m = n z? n : z; System.out.println(“max= “+m);char 0 (48)char 1 (49) x=x-48;y=y-48;x=z-48; C:java Test请输入三个09之间的数370max= 7C:条件选择语句n示例import java.io.IOException;class Test public static void main(String args) throws IOException System.out.pri

38、ntln(“中国足球能否进入世界杯?); System.out.println(“是(y) 否(n) 不一定(p); char c = (char) System.in.read(); if (c = y) System.out.println(“Cool”); else if (c = n)System.out.println(“Bad”); else if (c = p)System.out.println(“Sorry”); else System.out.println(“Input Error”);逐条if语句进行判断条件匹配,进入语句体否则对if语句继续匹配switch/开关语句n

39、根据表达式的结果执行多个操作中的一个n语法switch (表达式) case 值1: 语句序列; break; case 值2: 语句序列; break; default: 默认语句; 与任一case值不匹配,则进入default语句流程图表达式语句序列1语句序列2默认语句break;break;break;值1值2defaultswitch/开关语句n语法switch (表达式) case 值1: 语句序列; break; case 值2: 语句序列; break; default: 默认语句; n几点注意1.switch语句表达式的结果必须是byte, char, short, int 类

40、型2.表达式的结果依次与每个case子句比较3.break语句用于跳出switch语句4.default子句是可选的switch/开关语句n示例 1import java.io.IOException;class Test public static void main(String args) throws IOException System.out.println(“中国足球能否进入世界杯?); System.out.println(“是(y) 否(n) 不一定(p); char c = (char) System.in.read(); switch (c ) case y: Syste

41、m.out.println(“Cool”); break;case n: System.out.println(“Bad”); break;case p: System.out.println(“Sorry”); break;default: System.out.println(“Input Error”); break;n示例 2public class Test public static void main(String args) int month = 2, year = 2000; int numDays = 0; switch (month) case 1: case 3: c

42、ase 5: case 7: case 8: case 10: case 12: numDays = 31; break;case 4: case 6: case 9: case 11: numDays = 30; break; case 2: if (year % 4 = 0) & !(year % 100 = 0) | (year % 400 = 0) ) numDays = 29; else numDays = 28; break; System.out.println(Number of Days = + numDays); switch/开关语句循环控制语句n反复执行同一代码块直到满

43、足结束条件n组成1.循环的初始状态2.循环体3.迭代因子(计数器的递增或递减)4.控制表达式n3种循环语句1.while循环2.do-while循环3.for循环循环控制语句nwhile循环n语法 while (布尔表达式) 循环体; false循环体布尔表达式true流程图循环控制语句n示例class Test public static void main(String args) int i, sum; sum = 0; i = 0; while (i java Test输入一句子以.表示结束fdsfs.Output = fdsfs.C:java Test输入一句子以.表示结束fdsf中

44、国.Output = fdsf?.C:循环控制语句nfor循环: 最有效、最灵活的循环结构n语法 for (初始化部分;条件判断部分;迭代因子) 循环体; 初始化部分n设置循环变量的初值条件判断部分n任意布尔表达式迭代因子n控制循环变量的增减初始化部分条件判断true流程图循环体执行迭代因子false循环控制语句nfor语句求07之间任意数的阶乘import java.io.IOException;class Test public static void main(String args) throws IOException int i, n, sum=1; System.out.prin

45、tln(“Please input(07):”); n = System.in.read(); n -= 48; for (i = 1; i java TestPlease input(07):55!=1201.能否算092.能否算12, 134?循环控制语句nfor循环的几点注意初始化部分和迭代因子可以包含多个语句,以“,”分开for (int i=0, j=10; ij; i+, j-) 初始化部分、条件判断部分和迭代因子可以为空语句,但以“;”分开,表示无限循环for ( ; ; ) / infinite loop .循环控制语句n如果一个人出生于1970年,那么他这一辈子能有几个闰年(

46、以70岁为寿命长度)int length = 70;int firstYear = 1970;int year;for (int i =0; i length; i+) year = firstYear + i; if(year%4=0&year%100!=0)| year%400=0)System.out.println(year);19721976198019841988199219962000200420082012201620202024202820322036循环控制语句n循环的嵌套一个循环体内包含另一个完整的循环结构嵌套的层次多,多重嵌套while循环、do-while循环、for

47、循环相互嵌套循环控制语句n求 1!+2!+3!+ +9!import java.io.IOException;class Test public static void main(String args) throws IOException int n, sum, total=0; System.out.println(“Please input(09):”); n = System.in.read(); n -= 48; for (int j = 1; j = n; j+) sum = 1;for (int i = 1; i java TestPlease input(09):4各阶乘之和

48、为: 33输入0的结果!跳转/转向语句n将程序的执行跳转到其他部分的语句nbreak: 跳出(中止)循环ncontinue: 结束本次循环nreturn: 方法返回nthrow: 抛出异常(Exception)跳转语句nbreak语句break语句用以中断当前执行的循环语句(for、do-while、while)或switch语句两种形式n不带标号的break语句表达形式: break;从本层循环中跳出n带标号的break语句表达形式:从整个程序块中跳出标号: 程序块 (break 标号;)若只有一层循环,带标号和不带标号作用相同若存在循环嵌套,两者作用不同n不带标号的break语句class

49、 Test public static void main(String args) for (int j = 1; j 1; j-) for (k=1; k=9; k+) if (k =5) break; if (j=6) break Rep;System.out.print(j*k+“ ”); System.out.println(“”); 跳转语句8 16 24 32 7 14 21 28 若只有一层循环,带标号和不带标号作用相同若存在循环嵌套,两者作用不同跳转语句ncontinue语句continue语句用以结束循环语句(for、do-while、while)的本次循环两种形式n不带标

50、号的continue语句表达形式: continue;结束本次循环,即跳过continue语句后的语句,返回至本层循环体的条件测试部分n带标号的continue语句表达形式:跳至标号所指语句块的条件测试部分继续执行n注意与break语句的比较标号: 程序块 (continue 标号;)若只有一层循环,带标号和不带标号作用相同若存在循环嵌套,两者作用不同n不带标号的continue语句class Test public static void main(String args) for (int k = 6; k =0; k-=2) if (k = 4) continue;System.out.

51、print(“k=“ + k + “t”); 跳转语句k=6 k=2 k=0n带标号的continue语句class Test public static void main(String args) iLoop: for (int i=1; i =5; i+) for (int j=1; j=10) System.out.print(p +“ ”);else System.out.print(p + “ ”); System.out.println(); 跳转语句12 4 536 12 1548 16 20510 20 50 若只有一层循环,带标号和不带标号作用相同若存在循环嵌套,两者作用不

52、同nimport/包含语句引入程序所需要的类import java.io.*;import java.applet.Applet;npackage/打包语句指明所定义的类属于哪个包通常作为源程序的第一条语句package test;其他语句第二章 Java语法基础1.词法规则2.数据类型3.常量与变量4.运算符和表达式5.语句6.数组和字符串命令行参数nJAVA应用程序的主方法(程序的入口) public static void main (String args) public static void main (String args) n命令行参数在启动JAVA应用程序时一次性地传递多个

53、参数C:java 类名 参数 参数 空格将参数分开若参数包含空格,用双引号引起来命令行参数n示例 1class Test public static void main(String args) int len = args.length;System.out.println(len);for (int i = 0; i java Test0C:C:java Test s1 s22s1s2C:C:java Test “s1 s2”1s1 s2C:命令行参数n示例 2 class Test public static void main(String args) for (int i = 0;

54、i java Test s1 “s2” “s3” args0=s1args1=s2args2=s3C:命令行参数n命令行参数的转换 传递字符串数组向JAVA应用程序传递数值nbyte、short、int、long、double、floatC:java Test 1 23C:String argsi byte short int long double float命令行参数n命令行参数的转换java.lang.Byte类npublicstaticbyteparseByte(Strings)throwsNumberFormatExceptionjava.lang.Integer类npublicst

55、aticintparseInt(Strings)throwsNumberFormatException命令行参数n示例import java.lang.NumberFormatException;class Test public static void main(String args) throws NumberFormatException int sum = 0;for (int i = 0; i java Test 1 23C:第二章 结束 !3.6 包 装 类 基 本 类 型包 装 类基 本 类 型包 装 类byteshortintlongcharByteShortIntegerL

56、ongCharacterfloatdoublebooleanvoidFloatDoubleBooleanVoid表表3-18基本类型与包装类基本类型与包装类3.7 输入输出初步 n3.7.1 输出n int i=10,j=20;n System.out.println(i=+i+,j=+j); /输出为i=10,j=20n System.out.println(i+j); /输出为30n System.out.println(sum=+i+j); /输出为sum=1020n System.out.println(sum=+(i+j); /输出为sum=30n3.7.2 输入n在Java中,未提供与System.out.print()对应的输入方法,仅有一个System.in.read(),可用于从键盘输入整数值在0255之间的int类型数据。若程序运行时需要从键盘输入其他类型的数据,则需要使用Java提供的输入输出功能。不论从键盘输入何种类型的数据,Java从键盘接收数据都是以字符串的形式进行,再根据实际数据的需要进行类型转换。n在Java中实现输入时要使用异常处理机制,这是Java特有的部分内容

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号