java基础教程_(5)

上传人:xh****66 文档编号:61934600 上传时间:2018-12-15 格式:PPT 页数:43 大小:553KB
返回 下载 相关 举报
java基础教程_(5)_第1页
第1页 / 共43页
java基础教程_(5)_第2页
第2页 / 共43页
java基础教程_(5)_第3页
第3页 / 共43页
java基础教程_(5)_第4页
第4页 / 共43页
java基础教程_(5)_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《java基础教程_(5)》由会员分享,可在线阅读,更多相关《java基础教程_(5)(43页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计,、,第五章 运算符以及 条件判断结构,学习目标: 掌握常用的各种运算符 if条件判断语句 switch结构,1. 算术运算符,算术运算符包括:+, -, *, /, +, -, % 没有指数运算 Math.pow(2.0, 3.0); / 2.03.0 整数除法 :截去余数 7 / 5 结果为 1 取模%:返回余数 7 % 5 结果为 2,算术运算符:,问题?,-7 / 5 = -7 % 5 = 7 % -5 = 5.5 % 1.0 = 7 / -5 = 3/6*12 = 15.25%0.5 = 15.75%0.5 =,-1 -2 2 0.5 -1 0 0.25 0.25,取

2、模运算的结果符号与第一个操作数相同,升级和类型转换,赋值和表达式可能引起计算的数据类型与保存结果的存储位置之间的不匹配。,左边的数据类型右边的数据类型 : byte num1=53; byte num2=47; long num3; num3=num1*num2; 左边的数据类型右边的数据类型: int num1=53; int num2=47; byte num3; num3=num1+num2; 左边的数据类型右边的数据类型: int num1=53; int num2=47; byte num3; num3=num1*num2;,注意: Java是强类型语言,因此,在进行赋值操作时要对类

3、型进行检查;,自动升级规则,1. (byte或 short) op int int 2. (byte或 short或 int) op long long 3. (byte或 short或 int或 long) op float float 4. (byte或 short或 int或 long或 float) op double double 5. char op int int 其中,箭头左边表示参与运算的数据类型 op为运算符(如加、减、乘等) 右边表示运算结果的数据类型。 如:3+4.5,因为4.5是float型,所以3先被转换为float型,然后再于4.5相加,其结果也为float型。,

4、例: 自动升级实例,public class Promotion public static void main( String args ) byte b = 10; char c = a; int i = 90; float f = 3.5f; double d = 1.234; float f1; f1 = f * b; int i1; i1 = c+i; double d1; d1 = f1 / i1 d; 查看结果:Test.java,查看结果:Promotion.java,public class Age public static void main(String args )

5、int ageYears; int ageDays; long ageSeconds; ageYears=Integer.parseInt(args0); ageDays=ageYears*365; ageSeconds=(ageYears*365*24L*60*60); System.out.print(“You are”+ageDays+”days old.”); System.out.print(“You are”+ageSeconds+”seconds old.”); 查看结果:Age.java,2. 关系运算符,六个关系运算符: 、=、= 和 != 用于比较数值类型数据的大小,结果是

6、布尔值 例如: 1 2; / false 3.5 != 1; / true 51.5 = 23.0; / true 540 = 654; / true 24 = 3*8; / true boolean test1=(10 10); / test1= false;,注意事项,、=只能用来比较两个数值类型数据(含字符类型)的大小 不能用于Strings、booleans、arrays或其他类型,3.布尔逻辑运算符,操作数要求是布尔类型数据,结果为布尔值 六个布尔逻辑运算符: & (逻辑与AND) | (逻辑或OR) (逻辑异或XOR ) ! (逻辑非NOT) 单目运算符, 即只有一个操作数 & (

7、条件与AND) | (条件或OR),短路规则 ( &和| ),如果从第一个操作数可以推断出表达式结果,就不再计算第二个操作数 例如: if (x = 2) ,逻辑运算(&和| ),两个操作数均会被运算 (即不采用短路规则) 例如, (birthday = true) | (+age = 65),查看结果:J_Boolean.java,4. 位运算符,位运算符包括:&、|、和 带符号右移 不带符号右移 越晦涩难懂的,越会被SCJP考到 (?) 移位操作是:先将整数写成二进制形式,然后按位操作,最后产生一个新的数 注意: 只用于整数,5. 赋值类运算符,赋值类运算符包括:=、+=、-=、*=、/=

8、、 i*=2+3等价于?,6. 条件运算符,条件运算符“? :”的表达式形式为 (op1 ? op2 : op3) 其中要求op1为布尔表达式,Op1的值为true,结果为表达式op2的值;否则,结果为表达式op3的值 op2和op3需要返回相同的数据类型,不能为void,例如: int i=5; int k= ( (i=0) ? 1 : -1);,int x=5,y=8,z=2 int k=x3?y:z; 请问k=?,k=2,int y=x0?x:-x; 请问y=?,y=|x|,7. 其他运算符,其他运算符包括: (类型)、.、 、( )、instanceof和new 例如: int a=5

9、1; char c=(char)a;,运算符优先级别,优先级规则: ()乘除(从左到右)加减(从左到右) 复杂的表达式: C=25-5*4/2-10+4; 从左到右的规则求值,结果是:34 按照优先级规则求值,结果是:9 可以用( )来改变优先顺序或使表达式更容易理解 例如: a + b + c / 3 (a + b + c ) / 3,JAVA的流程控制语句,结构化程序设计的三种基本控制语句 顺序结构 选择结构 三种类型: if、if/else和switch 循环结构 三种类型: for、while和do/while,按语句书写的先后顺序执行,在若干路径中有条件地择一执行,当某条件成立时,反

10、复执行一段代码,if语句,if语句的格式是: if (布尔表达式) 语句 或 if (布尔表达式) 一条或多条语句 例如 if ( grade = 60 ) System.out.println( “Passed“ );,if-else语句,if-else语句的格式是: if (布尔表达式) 语句1或语句块1 else 语句2或语句块2 例如: if (grade=60) System.out.println(“Passed!“); else System.out.println(“Failed!“);,例 1 System.out.println(studentGrade = 60 ? “P

11、assed“ : “Failed“); 例2 max = ( a b ? a : b ); 可以写成: if (a b) max = a; else max = b;,例:比较两个数的大小,并按照从大到小的顺序输出到屏幕上。,public class CompareTwo public static void main(String args) double d1=23.4; double d2= 56.9; if(d1=d2) System.out.println(d1+”=“+d2); else System.out.println(d2+”=“+d1); ,多重If 结构,查看结果:Co

12、ffee.java,If 条件A If 条件B 语句块1 else 语句块2,注意:else总是与最近的if匹配,If 条件A If 条件B 语句块1 else 语句块2,测试String之间的等同性,使用=比较String在内存中的引用是否相等 要测试两个字符串之间是否具有等同性用equals,switch 语句形式如下: switch (表达式) case 判断值1: 语句块1; break; case判断值2: 语句块2; break; case判断值n: 语句块n; break; default: 缺省处理语句; break; ,1. 要注意表达式必须是符合char,byte, sho

13、rt,int类型的表达式,而不能使用boolean类型,浮点类型或long类型,也不能为一个字符串; 2. 将表达式的值依次与每个case子句中的判断值相比较。如果匹配成功,则执行该case子句中常量值后的语句,直到遇到break语句为止; 3. case子句中判断值的类型必须与表达式的类型相容,且每个case子句中判断值的值必须是不同的; 4. default子句是可选的,当表达式的值与任一case中的判断值都不匹配时,就执行default后的语句。如果表达式的值与任一case中的判断值都不匹配且没有default子句,则程序不执行任何操作,直接跳出switch 语句,进入后续程序段的执行。

14、,多分支选择结构switch语句,switch语句的流程如图所示:,表达式,break,语句1,break,语句2,break,语句n,break,缺省处理语句,后续语句,判断值1,判断值2,判断值n,default,.,switch语句的注意点,5. break语句用来在执行完一个case 分支后,使程序跳出switch 语句,执行switch 语句的后续语句。因此一般情况下,在每个case 分支后,要用break来终止后面的case 分支语句的执行; 6. 在一些特殊的情况下,例如多个不同的case值要执行一组相同的操作,可以写成如下形式: case判断值n: case判断值n+1:语句

15、break; 7.case 分支中包括多个执行语句时,可以不用花括号“”括起; 8.通过if-else语句可以实现switch 语句所有的功能。但通常使用switch语句更简练,且可读性强,程序的执行效率也高; 9. if-else 语句可以基于一个范围内的值或一个条件来进行不同的操作,但switch 语句中的每个case 子句都必须对应一个单值。,查看结果:SwitchTest.java,查看结果:SwitchDaysInMonth.java,例:用switch语句实现学生成绩的百分制到等级制的转换。,class SwitchDemo public static void main(String args) int testscore=88; char grade; switch (testscore/10) / 两个整型数相除的结果还是整型 case 10: /此处没有使用break case 9: grade=A; /值为10和9时的操作是相同的 break; case 8: grade=B; break; case 7: grade=C; break; case 6: grade=D; break; default: grade=F; break; System.out.printl

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

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