付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、运算符、表达式和流程控制课程代码:AMPC0102V20课程介绍目的:掌握Java运算符、表达式用法及程序流程控制。内容:Java运算符分类及其用法,表达式的组成及运算规则,实现程序运行流程控制的分支结构、循环及递归结构。重点:运算符、流程控制难点:递归运算符、表达式和流程控制 运算符 表达式 程序运行流程 分支语句 循环语句 递归一. 运算符算术运算符关系运算符布尔运算符位运算符移位运算符赋值运算符其他运算符运算符概述运算符是用于标记对数据执行某种运算的特定符号。按运算性质分类:算术运算符:+,-,*,/,%关系运算符:,=,赋值运算符:=及扩展赋值运算符(+=,-=,*=,/=,)其他运算
2、符:+,-,?: ,+,-按操作数的个数分类:单目运算符双目运算符三目运算符布尔运算符布尔运算符及其功能:!- 逻辑非 & - 逻辑与| - 逻辑或 - 逻辑异或 &- 短路与| - 短路或功能举例:ab!aa&ba|baba&ba|btruetrue falsetruetruefalsetruetruetruefalsefalsefalsetruetruefalsetruefalsetruetruefalsetruetruefalsetruefalsefalsetruefalsefalsefalsefalsefalse短路逻辑运算符使用短路逻辑运算符&和|可实现“短路”的“与”和“或”运算的
3、功能当根据第一个操作数的值已经能够确定整个表达式的结果时,将跳过对第二个操作数值的评估,直接得出最终结果。if(n31)System.out.println(非法赋值);短路逻辑运算符应用举例class MyDatepublic int day,month,year;public MyDate(int d, int m, int y)day = d; month = m; year=y;public class Test public static void main(String args)MyDate m = null;m = new MyDate(38,6,2002);if(m!=nul
4、l) & (m.day0) & (m.day31) System.out.println(日期合法);位运算符位运算符功能 - 取反 & - 按位与 | - 按位或 - 按位异或位运算符功能说明:010011111011000001101101&010010011100101101101101 |111011111100101101101101 1010011011001011Java整数二进制表示Java语言二进制数采用补码形式表示。正数进制转换十进制-二进制:除2取余、除尽为止二进制-十进制:累加求和负数进制转换十进制到二进制:取绝对值转换为二进制逐位取反加1二进制到十进制:减1逐位取反转
5、换为十进制正数乘-1使用位运算符public class TestBitwiseOperatorpublic static void main(String args)int a = 9 & 12;int b = 9 | 12;int c = 9 12;int d = 12;System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);输出结果:8135-13例4-4移位运算符移位运算符用于对整型数据的二进制位进行移位处理。左移ab;将二进制形式的a逐位右移b位,最高位(左侧)空出
6、的b位补原来的符号位;无符号右移ab;将二进制形式的a逐位右移b位,最高位空出的b位补0。移位运算展示2227 = 00000000 00000000 00001000 10110011 22273 = 00000000 00000000 00000001 00010110 22273 = 00000000 00000000 00000001 00010110 -2227 = 11111111 11111111 11110111 01001101-22273 = 11111111 11111111 11111110 11101001 -22273 = 00011111 11111111 111
7、11110 11101001 移位运算符性质适用数据类型:byte、short、char、int、long,对低于int型的操作数将先自动转换为int型,再进行移位 。对于int型整数移位ab,系统先将b对32取模,得到的结果才是真正移位的位数。对于long型整数移位时ab ,则是先将移位位数b对64取模。移位运算符应用举例实现二进制位的屏蔽效果public class TestMask/*获取指定整数num二进制表示从右侧数第n位的值*/public int getOneBit(int num,int n)int i = 1 (n-1);public static void main(Str
8、ing args)int x = 6;TestMask tm = new TestMask();System.out.print(tm.getOneBit(x,4);System.out.print(tm.getOneBit(x,3);System.out.print(tm.getOneBit(x,2);System.out.print(tm.getOneBit(x,1);例4-5 赋值运算符=将等号右侧表达式的计算结果赋给等号左侧的变量,赋值操作时遵循值传递原则。=左侧必须是一个已经声明过的变量,而不允许是常量或复合表达式。赋值运算符左右两侧的数据类型应保持一致,可以自动进行类型转换的情况除
9、外。int i = 5, j = 6;/合法j = i + 10 ;/合法10 = i + j;/非法i + j = 10;/非法扩展赋值运算符将赋值运算符和其他的运算符结合起来可以组成扩展赋值运算符,以实现简化的运算标记效果。运算符使用格式功能说明 += a += b a = a + b -= a -= b a = a - b *= a *= b a = a * b /= a /= b a = a / b %= a %= b a = a % b &= a &= b a = a & b |= a |= b a = a | b = a = b a = a b = a = b a = a = a
10、= b a = a b = a = b a = a b条件运算符?:语法格式:说明:必须为boolean类型,当其值为true时,则将的值作为整个表达式的最终结果,否则将的值作为整个表达式的最终结果。 ? : int score = 50;int result = x 60 ? 60: x;String type = score 60 ? 不及格 : 及格;自增/自减运算符+/-用于对单个变量进行增1和减1操作。可以单独使用,也可用于复合表达式中;运算符可以位于变量之前,也可用于变量之后。int i = 5;int j;i +;/等价于i = i + 1; 或 +i;j = +i;/等价于i
11、= i + 1; j = i;j = i+; /等价于j = i; i= i + 1;j = 4 * i-; /等价于j = 4 * i; i = i - 1;字符串连接运算符 + 除用于算术加法运算外,还可用于对字符串进行连接操作。+运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。int i = 300 +5;String s = hello, + world!;int i = 300 +5;String s = hello, + i + 号;System.out.println(s); 输出结果:hello, 305号二. 表
12、达式什么是表达式表达式中的数值类型转换什么是表达式?表达式是符合一定语法规则的运算符和操作数的序列 。表达式的类型和值对表达式中操作数进行运算得到的结果称为表达式的值 表达式的值的数据类型即为表达式的类型 表达式的运算顺序首先应按照运算符的优先级从高到低的顺序进行 优先级相同的运算符按照事先约定的结合方向进行3a 5.0 + a(a-b) * c - 4String s1 = 3 + 5 + hello;/s1结果为8helloString s2 = hello + 3 + 5;/s2结果为hello35运算符优先级/结合方向结合方向Java运算符从左向右 () . (方法调用)从右向左+ -
13、 +(单目运算) -(单目运算) ! (强制类型转换) new从左向右* / %从左向右+(加) -(减)从左向右 从左向右 = instanceof从左向右= !=从左向右&从左向右从左向右|从左向右&从左向右|从右向左?:从右向左= += -+ *= /= %= &= |= = = =表达式中的数值类型转换自动类型转换强制类型转换数值类型间转换途径int n = 35;long a = n;float f = n;double d = c;double e = 3.14f;int i = (int)3.14;byte b = (byte)i;byteshortintlongfloatdou
14、blechar三. 程序运行流程顺序性结构分支结构循环结构顺序结构按照运行流程来划分,程序可分为三种基本结构顺序结构、分支结构和循环结构。顺序结构:按照语句出现的顺序依次执行的程序结构。语句A语句B分支结构分支结构也称选择性结构,有条件地执行或跳过特定的语句或语句块,实现有选择的流程控制。语句块条件truefalse单路分支结构语句块1条件truefalse语句块2双路分支结构语句块1条件1falsetrue语句块2条件2falsetrue语句块n条件nfalsetrue语句块n+1多路分支结构循环结构在一定的条件下重复执行特定代码。条件truefalse当型循环结构语句块条件 truefal
15、se直到型循环结构语句块四. 分支语句if-else语句switch语句if-else语句if-else语句用于实现分支结构,其中的else子句不是必须的,if-else语句又可细分为三种形式:单路分支结构双路分支结构多路分支结构if语句实现单路分支结构语法格式:举例:if()int score = 57;if(score 60)score = 60;/受if条件影响,条件成立时执行System.out.println(score: + score);/无条件执行if语句实现双路分支结构语法格式:举例:if()elsepublic void m1(int a, int b)int max; i
16、f(a b)max = a;elsemax = b;System.out.println(max= + max);if语句实现多路分支结构语法格式:if()else if() else if()else public char convert(int score)char grade;if (score = 90) grade = A;grade = B; else if (score = 60) grade = C; else grade = F;return grade;举例:switch语句用于实现简单的多路分支结构。语法格式:switch () case : case : . case
17、 : default: 说明:switch后的必须是下述几种类型之一:int, byte, char, short,枚举类型和封装类类型;case子句中的常量值不得重复;default子句是任选的;break语句用来在执行完一个case分支后使程序跳出switch语句块;switch语句举例(1)public class Testpublic static void main(String args)int i = 1;switch (i) case 0:System.out.println(zero);break;case 1:System.out.println(one);break;ca
18、se 2:System.out.println(two);break;default:System.out.println(default);break;switch语句举例(2)public void convert(char grade)switch (grade) case A: case B: case C: System.out.println(=60); break;case D: System.out.println(60); break;default: System.out.println(error);break;五. 循环语句for循环while循环do-while循环f
19、or-each循环循环的嵌套流程控制语句break和continuefor循环语法格式:运行流程:for (; ; ) for (; ; )true结束false开始for循环举例public class TestForLoop public static void main(String args)int result = 0;for(int i = 1; i=100; i+)result += i;System.out.println(result);例4-17while循环语法格式:举例:while() public class TestWhileLooppublic static vo
20、id main(String args)int i = 1;int result = 0;while(i = 100)result += i;i +;System.out.println(result);例4-19do-while循环语法格式:举例:dowhile(); public class TestDoWhileLooppublic static void main(String args)int i = 1;int result = 0;doresult += i;i +;while(i = 100);System.out.println(result);例4-20for-each循环
21、功能:逐个处理(遍历)数组或集合中的所有元素。 语法格式:举例:for( : )public class TestForEachLooppublic static void main(String args)int a = 3,5,78,12;for(int k : a)System.out.println(k);输出结果:357812例4-21循环的嵌套循环体中再包含有循环语句,嵌套层次无限制。public class TestNestedLooppublic static void main(String args)TestNestedLoop tn = new TestNestedLoo
22、p();int total = tn.m(4); /计算1! + 2! + 3! + 4! = 33System.out.println(total);public int m(int n)int result = 0;for(int i=1; i=n; i+)int temp = 1;for(int j=1; j=i; j+)temp *= j;result += temp;return result;例4-22break语句break语句用于终止所在switch块或循环语句的运行。语法格式:举例:break; break ; public class TestBreakpublic sta
23、tic void main(String args)for(int i = 0; i10; i+) if(i=3)break;System.out.println( i = + i);System.out.println(Game Over!);例4-23终止嵌套循环import java.util.Scanner;public class TestBreakOuterpublic static void main(String args)Scanner scan = new Scanner(System.in);int i;outer:while(true)i = scan.nextInt(
24、);for(int j=2; ji; j+)if(i%j = 0) System.out.println(i + 不是素数,程序退出); break outer;System.out.println(i + 是素数,请继续!);例4-24continue语句continue语句用于结束所在的循环语句的本次运行,即跳过其后的循环体语句,开始下一次循环。语法格式:举例:break; break ; public class TestContinuepublic static void main(String args)for (int i = 0; i 100; i+) if (i%10=0)co
25、ntinue;System.out.println(i);例4-25跳过嵌套循环public class TestContinueOuterpublic static void main(String args)int n = 0;outer:for(int i=101;i200;i+=2) for(int j=2; ji;j+) if(i%j=0) continue outer; System.out.print(i + t);n+; if(n2)程序要点:使用递归不使用递归实现代码:例4-28 解决Fibonacy数列问题汉诺塔问题游戏规则:在一块铜板上面立有三根杆A、B、C,开始时在A杆上串有若干个大小各不相同的金盘,且保证小盘在上、大盘在下,游戏的目标是把A杆上的金盘最终全部移到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年气体灭火系统安装与调试
- 上海立达学院《安全检测技术》2025-2026学年第一学期期末试卷(B卷)
- 2026年国内外露营装备市场现状与品牌格局
- 2026年冠心病日常保健与用药指南
- 上海立达学院《Access 数据库技术》2025-2026学年第一学期期末试卷(A卷)
- 上海立信会计金融学院《安装工程技术》2025-2026学年第一学期期末试卷(A卷)
- 上海立信会计金融学院《安全监察和管理》2025-2026学年第一学期期末试卷(B卷)
- 2026年牙科保险中介机构发展与服务模式创新
- 上海立信会计金融学院《AutoCAD 绘图》2025-2026学年第一学期期末试卷(A卷)
- 大连东软信息学院《AI 设计基础》2025-2026学年第一学期期末试卷(B卷)
- 工业地转让协议书
- 2026年河北机关事业单位工人技能等级考试(公共基础知识)仿真试题及答案
- 2026年部编版语文六年级下册期末测试题(共5套有答案)
- 2026年国有企业领导人员廉洁从业若干规定知识试题
- VDA6完整版本.3-2023检查表
- 山东大学世界经济史(高德步教材)
- 氮气管道试压方案
- 自然资源学原理第二版课件
- 2022年江苏旅游职业学院辅导员招聘考试真题
- EN60998-2-1标准讲解课件
- 现场临时用水方案
评论
0/150
提交评论