运算符、表达式和语句.ppt_第1页
运算符、表达式和语句.ppt_第2页
运算符、表达式和语句.ppt_第3页
运算符、表达式和语句.ppt_第4页
运算符、表达式和语句.ppt_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章运算符 表达式和语句 内容摘要 3 1运算符与表达式3 2语句概述3 3if条件分支语句3 4switch开关语句3 5循环语句3 6break和continue语句3 7数组与for语句3 8枚举类型与for switch语句 3 1运算符与表达式 算术运算符与算术表达式自增 自减运算符关系运算符与关系表达式逻辑运算符与逻辑表达式赋值运算符与赋值表达式位运算符与表达式条件运算符与表达式instanceof运算符运算符综述 1 算术运算符与算术表达式 与C C 相似 Java算术运算符用于整型或实型数的运算一元运算符二元运算符 一元算术运算符 op op 先进行自增 自减运算 再把其结果用于后继的操作 例 x 1 y x结果 x 2 y 2op op 先进行别的运算 然后再进行自增 自减运算 例 x 1 y x 结果 x 2 y 1注意 自增 自减运算符只能作用于变量 而不能作用于常量或表达式 自增 自减运算符 例 inti 2 intj 3 intm j i intk m i 在运行完上述四条指令后 i j的值均加1成为3 4 而m k的值变成了6 8 需要注意的是 由于第三条语句中出现了 j 故m的值为6 第四条语句中是i 所以k的值为8 自增 自减运算符 从上面的例子中 可以知道 自增 自减运算符使用灵活 但容易造成副作用 实际应用时须十分小心 例 inta 2 intb 3 System out println a b System out println b 自增 自减运算符 a b b 自增 自减运算符不能用于表达式 出错 二元算术运算符 Java的二元运算符有 五种 用法与C C 类似 见下表所示 整除 整数 整数例 5 2 22 4 0浮点除 操作数必须有一个为浮点数例 5 2 0 2 52 0 4 0 5 二元算术运算符 二元算术运算符 取模运算 要求运算对象为整型类型当被除数为正时 结果为正 当被除数为负数结果为负例 inti j k i 5 2 j 5 2 k 5 2 结果i 1 j 1 k 1 算术混合运算的精度 算术运算的操作数常常具有不同的类型 比如说 一个操作数为int型 另一个操作数为long型 一旦碰到这种情况 就需要进行类型的转换 一般原则是保证结果的数据类型与精度最高的操作数数据类型一致 Java程序中的类型转换 castingconversion 可分为显式类型转换和隐式类型转换两种形式 算术混合运算的精度 精度从低到高的顺序是 byte short char int long float double若表达式中有double型数据 则按double型数据进行运算例 5 2 0 10结果为double型12 5若表达式中最高精度是float型数据 则按float型数据进行运算例 5 2 0F 10结果为float型12 5若表达式中最高精度是long型数据 则按long型数据进行运算例 12L 100 a 结果是long型209若表达式中最高精度低于int型数据 则按int型数据进行运算例 byte 10 a 和5 2的结果分别是int型的107和2 隐式类型转换 算术混合运算的精度 例如 inti 5 shortj 3 floata 5 0f 则 i j a的值为float型例 P22 bytex 7 则 x B 的值为int型 显式类型转换 显式类型转换需要人为地在表达式前面指明所需要转换的类型 系统将按这一要求把某种类型强制性地转换为指定的类型 其一般形式如下 算术混合运算的精度 例如 inti floath 9 6F i int h 则i的值为9 需要注意的是 使用显式转换会导致精度下降或数据溢出 因此要谨慎使用 此外 显式类型转换是暂时的 算术混合运算的精度 例如 inti 98 m floath h 3 4F float i m 2 i 在h 3 4F float i表达式中 通过显示类型转换将整型变量i的类型转换为float型 而在其后的表达式m 2 i中 i仍为int型 可见 显示类型转换是暂时的 示例程序c2 6 java publicclassc2 6 publicstaticvoidmain Stringargs intx y x int 82 5 y int A int b System out print tx x System out println ty y 该程序的运行结果是 x 82y 163 关系运算符与关系表达式 关系运算符用于两个值之间的关系比较 其返回值为布尔类型 示例程序c2 8 java publicclassc2 8 publicstaticvoidmain Stringargs booleanx y doublea b a 12 897 b 345 6 x a b y a b System out println a b a b System out println x x System out println y y 运行结果如下 a b falsex truey false 逻辑运算符与逻辑表达式 与C C 不同 Java中 逻辑运算符只能对布尔型数据进行操作 其返回值同样为布尔值 注意 和 在执行操作时 运算符左右两边的表达式首先被运算执行 再对两表达式的结果进行与 或运算 而利用 和 执行操作时 如果从左边的表达式中得到的操作数能确定运算结果 就不再对右边的表达式进行运算 采用 和 的目的是为了加快运算速度 也称短路逻辑运算符 逻辑运算符与逻辑表达式 逻辑运算符中 逻辑与 示例程序c2 9 java publicclassc2 9 publicstaticvoidmain Stringargs intx 0 y booleana b a y 1 0 运行结果如下 a falsex 0y 1b falsex 6y 1 位运算符与表达式 位运算符用来对二进制数进行测试 置位或移位等操作 操作数只能为整型或字符型数据 Java语言的位运算符 一个按位异或的例子 intx 17 inty 10 System out println Thevalueis x y 该段程序的实际运算如下 x 10001y 01010 11011 27输出结果为27 示例程序c2 10 java publicclassc2 10 publicstaticvoidmain Stringargs intx y z a b a 22 b 3 x a b y a b z a System out print ta 运行结果如下 a b 2a b 23a b 2x 2y 21z 23 Example3 1 java classExample3 1 publicstaticvoidmain Stringargs chara1 十 a2 点 a3 进 a4 攻 charsecret A a1 char a1 secret a2 char a2 secret a3 char a3 secret a4 char a4 secret System out println 密文 a1 a2 a3 a4 a1 char a1 secret a2 char a2 secret a3 char a3 secret a4 char a4 secret System out println 原文 a1 a2 a3 a4 密文 卹炁迣攃原文 十点进攻 Example java classExample publicstaticvoidmain Stringargs intx y 10 if x 0 0 y 20 20 System out println 现在y的值是 y inta b 10 if a 0 0 b 20 20 System out println 现在b的值是 b 现在y的值是 10现在b的值是 20 赋值运算符与赋值表达式 赋值运算符 把一个数据赋给一个变量 其一般形式为variable typevariable name expression 赋值运算符的作用是将赋值运算符右边的数据或表达式的值赋给赋值运算符左边的变量 注意赋值号左边必须是变量 例如 intx 100 inty 200 floatz 100 0 赋值中的类型转换 在赋值表达式中 如果运算符两侧的数据类型不一致 但赋值符左边变量的数据类型较高时 系统会自动进行隐式类型转换 当然也可以人为地进行显式类型转换 如果赋值符左边变量的数据类型低于右边表达式值的类型 则必须进行显式类型转换 否则编译时会报错 例如 inta 65602 floatb charc1 c2 A b a 运算时先将a的值转换为b的类型 再赋给bb c2 正确的隐式类型转换c1 a 不正确的隐式类型转换 编译器会报错c2 char a 运算时Java将a的值按char类型的宽度削窄 抛弃高位的两个字节 再赋给c2 使c2的值为字符 B 复合赋值运算符 在赋值运算符 之前加上其他运算符 则构成复合赋值运算符 示例程序c2 7 java publicclassc2 7 publicstaticvoidmain Stringargs intx y z x 1 y 2 z 3 x y y x z x System out print tx x y System out print ty y System out println tz z 运行结果是 x 5y 2z 1 条件运算符与表达式 条件运算符是一个三元运算符 其一般形式为expression statement1 statement2 其语义为 首先计算表达式expression的值 如果该值为真 true 则将statement1的值作为整个表达式的值 反之 将statement2作为整个表达式的值 如 max x y x y 该语句取x y的最大值 需要注意的是 该运算符规定statement1和statement2需返回相同类型的数据 且不能为void 对象运算符与表达式 对象运算符instanceof是双目运算符它用来测试一个对象是否是某个类或其子类的实例 若是则返回true 反之返回false 例如 if e targetinstanceofMenuItem Stringnam String e arg 该段代码功能是测试组件上产生的事件是否对应于菜单 运算符综述 Java的表达式就是用运算符连接起来的符合Java规则的式子 运算符的优先级决定了表达式中运算执行的先后顺序 在编写程序时尽量的使用括号 运算符号来实现想要的运算次序 以免产生难以阅读或含糊不清的计算顺序 运算符的结合性决定了并列的相同级别运算符的先后顺序 运算符综述 运算符是有优先级的 它决定表达式中各运算执行的先后顺序 总的来说 运算符优先级具有如下规则 1 一元运算符比二元运算符优先级高 2 算术运算符比关系运算符优先级高 3 关系运算符比按位运算符优先级高 4 大于和小于运算符比等于和不等于运算符优先级高 5 按位运算符比逻辑运算符优先级高 6 逻辑与 比逻辑或 优先级高 7 赋值运算符优先级最低 Java运算符的优先级与结合性 3 2语句概述 Java的语句可分为以下5类方法调用语句System out println hello 表达式语句X 23 复合语句 z 53 控制语句if语句和switch语句package语句和import语句 3 3控制语句 Java语言提供了两条基本的分支选择语句 if语句和switch语句 用这两个语句可以形成以下三种形式的选择结构 1 单分支选择结构省略了else的if语句在条件为真时执行一个操作 条件为假时则跳过该操作 2 双分支选择结构if else语句用来判定一个条件 布尔表达式 当条件为真 true 时执行一个操作 条件为假 false 时执行另一个操作 3 多分支选择结构switch语句则是根据表达式的值来决定执行许多不同操作中的某一个操作 当然 使用嵌套if语句也可以实现多分支选择结构 条件控制语句 if语句是构造分支选择结构程序的基本语句 使用if语句的基本形式 可构造双分支选择结构程序 使用省略了else的if语句可构造单分支选择结构程序 使用嵌套if语句可构造多分支选择结构程序 1 If语句 if语句一般形式如下 if 布尔表达式 语句区块 Example3 2 java publicclassExample3 2 publicstaticvoidmain Stringargs inta 9 b 5 c 7 t if a b t a a b b t if a c t a a c c t if b c t b b c c t System out println a a b b c c 2 if else语句 if语句的基本形式如下 if 布尔表达式 语句区块1else语句区块2 Example3 3 java publicclassExample3 3 publicstaticvoidmain Stringargs intmath 65 english 85 if math 60 System out println 数学及格了 else System out println 数学不及格 if english 90 System out println 英语是优 else System out println 英语不是优 System out println 我在学习控制语句 3 if语句的扩充形式 其形式如下 if 布尔表达式1 语句区块1elseif 布尔表达式2 语句区块2elseif 布尔表达式3 语句区块3 else语句区块n 1 示例程序c3 4 java 使用if嵌套将百分制转换为5分制 publicclassc3 4 publicstaticvoidmain String args intgrade 76 if grade 90 System out println 成绩 优 elseif grade 80 System out println 成绩 良 elseif grade 70 System out println 成绩 中等 elseif grade 60 System out println 成绩 及格 elseSystem out println 成绩 不及格 3 4switch语句 switch语句根据表达式的值来执行多个操作中的一个 其格式如下 switch 表达式 case值1 语句区块1 break 分支1case值2 语句区块2 break 分支2 case值n 语句区块n break 分支n default 语句区块n 1 分支n 1 虚线箭头指出缺少break语句时的流程走向 switch语句流程控制 示例程序c3 6 java 判断成绩等级 importjava awt importjava applet publicclassc3 6extendsApplet publicvoidpaint Graphicsg intk intgrade 86 k grade 10 switch k case10 case9 g drawString 成绩 优 25 25 break case8 case7 g drawString 成绩 良 25 25 break case6 g drawString 成绩 及格 25 25 break default g drawString 成绩 不及格 25 25 例 Example3 4 java enumSeason 春季 夏季 秋季 冬季 publicclassExample3 4 publicstaticvoidmain Stringargs intx 96 y 1 Seasonseason Season 春季 switch x y case1 System out println x y break case a System out println x y case10 System out println x y break default System out println 没有般配的 x y switch season case冬季 System out println 隆冬腊月 case春季 System out println 春天种下种子 case秋季 System out println 秋天收获果实 break case夏季 System out println 暑假真好 3 5循环语句 循环语句的作用是反复执行一段程序代码 直到满足终止条件为止Java语言提供的循环语句有 while语句 do while语句和for语句 1 for循环语句 for 初始条件 终止条件 增量 statement 初始条件是为循环变量置初值 它在循环开始的时候就执行一次 终止条件决定循环是否继续 该条件表达式在每次循环的时候均作判断 如表达式结果为false 则循环结束 增量是循环一次增加多少 即步长 的表达式 括号内的三个表达式均可以为空 初值表达式 布尔表达式 循环体语句区块 循环过程表达式 true false Example3 5 java publicclassExample3 5 publicstaticvoidmain Stringargs longsum 0 a 8 item a n 12 i 1 for i 1 i n i sum sum item item item 10 a System out println sum 示例程序c3 16 java 编程打印三角形数字图案 122333444455555666666777777788888888999999999 示例程序c3 16 java publicclassc3 16 publicstaticvoidmain String args for inti 1 i 10 System out print i elseSystem out print i 并列的内嵌for循环结束System out println 外层for循环结束 2 while循环 while语句的一般形式为 while 布尔表达式 循环体语句区块 3 do while循环 do while语句的一般形式为 do 循环体语句区块 while 布尔表达式 Example3 6 java classExample3 6 输出Fibinacci数列前20项 publicstaticvoidmain Stringargs doublesum 0 a 1 inti 1 while i 20 sum sum a i i 1 a a 1 0 i System out println sum sum 3 5break和continue语句 breakcontinue break语句 break语句通常有不带标号和带标号两种形式 break breakLab 其中 break是关键字 Lab是用户定义的标号 break语句 break语句的应用有下列三种情况 break语句用在switch语句中 其作用是强制退出switch结构 执行switch结构后的语句break语句用在单层循环结构的循环体中 其作用是强制退出循环结构 若程序中有内外两重循环 而break语句写在内循环中 则执行break语句只能退出内循环 而不能退出外循环 若想要退出外循环 可使用带标号的break语句breaklab语句用在循环语句中 必须在外循环入口语句的前方写上lab标号 可以使程序流程退出标号所指明的外循环 示例程序c3 18 java 求1到100间的素数 素数也称为质数 是不能被2到比它自身小1的任何正整数整除的自然数 如3 5 7等都是素数 解决该问题的算法可用伪代码描述如下 1 构造外循环得到一个1 100之间的数i 为减少循环次数 可跳过所有偶数 2 构造内循环得到一个2 m之间的数j 令m 考察i是否能被j整除 若能整除则i不是素数 结束内循环 3 内循环结束后判断j是否大于等于m 1 若是 则i必为素数 打印输出之 否则 再次进行外循环 示例程序c3 18 java 求1到100间的素数 publicclassc3 18 publicstaticvoidmain String args intn 0 m j i for i 3 i m 1 if n 6 0 System out println n 换行控制System out print i n 外层循环结束 示例程序c3 19 java 求自然数1到50间的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论