Java流程控制语句总结
流程控制语句 1)顺序结构 从上往下,依次执行 2)选择结构按照不同的选择,执行不同的代码 3)循环结构 做一些重复的代码 1.1)顺序结构案例: 分析思路: 要完成两个变量值的交换,我们需要借助一个第三方的变量来暂存其中的一个变量的值,然后将数据已被暂存的变量的值改变,最后将另一个变量的值使用暂存的数据改变。 编写步骤,依次完成: ①声明第三方变量,假设为z ②将x的值赋给z,完成对x所代表的数据的暂时存储 ③将y的值赋给x,完成对x的交换过程 ④将z中暂存的x的原值赋给y,完成对y进行的交换过程 程序实现: intx=10,y=20; intz; z=x; x=y; y=z; System.out.println("交换后:x="+x+",y="+y); System.out.println("结论:顺序流程要分清语句执行的先后次序"); 2)选择结构 选择结构if 2.1)if语句 三种格式 A:格式1 if(比较表达式) { 语句体; } 执行流程: 判断比较表达式的值,看是true还是false 如果是true,就执行语句体 如果是false,就不执行语句体 B:格式2 if(比较表达式) { 语句体1; }else { 语句体2; } 执行流程: 判断比较表达式的值,看是true还是false 如果是true,就执行语句体1 如果是false,就执行语句体2 C:格式3 if(比较表达式1) { 语句体1; }else if(比较表达式2){ 语句体2; } ... else { 语句体n+1; } 执行流程: 判断比较表达式1的值,看是true还是false 如果是true,就执行语句体1 如果是false,就继续判断比较表达式2的值,看是true还是false 如果是true,就执行语句体2 如果是false,就继续判断比较表达式3的值,看是true还是false ... 如果都不满足,就执行语句体n+1 2.2)if选择案例: importjava.util.Scanner; publicclassJavaTest{ publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in); System.out.println("请输入要查询的分数:"); //考虑了分数还可能有小数 doublescore=scanner.nextDouble(); if(score>=90) System.out.println("您查询的成绩为优秀等级"); elseif(score>=80&&score<90) System.out.println("您查询的成绩为优良等级"); elseif(score>=70&&score<80) System.out.println("您查询的成绩为良好等级"); elseif(score>=60&&score<70) System.out.println("您查询的成绩为及格等级"); else System.out.println("您查询的成绩不及格"); } } 2.3)注意事项 A:比较表达式无论简单还是复杂,结果是boolean类型 B:if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条,不能省略。 建议:永远不要省略。 C:一般来说,有左大括号,就没有分号,有分号,就没有左大括号。 D:else后面如果没有if,是不会出现比较表达式的。 E:三种if语句其实都是一个语句,只要有一个执行,其他的就不再执行。 2.4)三元运算符和if语句第二种格式的关系 所有的三元运算符能够实现的,if语句的第二种格式都能实现。反之不成立。 选择结构switch语句 1.1)格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; break; } 格式解释说明: switch:说明这是switch语句。 表达式:可以是byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是字符串 case:后面的值就是要和表达式进行比较的值 break:表示程序到这里中断,跳出switch语句 default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else 1.2)执行流程: A:首先计算表达式的值 B:和每一个case进行匹配,如果有就执行对应的语句体,看到break就结束。 C:如果没有匹配,就执行default的语句体n+1 1.3)switch案例: A:键盘录入一个数字(1-7),输出对应的星期几。 importjava.util.Scanner; publicclassWeek{ publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in); System.out.println("请输入您要查询的星期数:"); intweek=scanner.nextInt(); switch(week){ case1: System.out.println("星期一"); break; case2: System.out.println("星期一"); break; case3: System.out.println("星期三"); break; case4: System.out.println("星期四"); break; case5: System.out.println("星期五"); break; case6: System.out.println("星期六"); break; case7: System.out.println("星期日"); break; default: System.out.println("请输入1-7有效的Week数目"); break; } } } 1.4)注意事项: A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的 B:default可以省略吗? 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。 特殊情况: case就可以把值固定。 A,B,C,D C:break可以省略吗? 可以省略,但是结果可能不是我们想要的。 会出现一个现象:case穿透。 最终我们建议不要省略 D:default一定要在最后吗? 不是,可以在任意位置。但是建议在最后。 E:switch语句的结束条件 a:遇到break就结束了 b:执行到末尾就结束了 1.5)if语句和switch语句各自的场景 A:if 针对boolean类型的判断 针对一个范围的判断 针对几个常量的判断 B:switch 针对几个常量的判断 3、循环语句: 3.1)有三种:for,while,do...while 3.1.1)for循环语句 A:格式 for(初始化语句;判断条件语句;控制条件语句){ 循环体语句; } 3.1.2)执行流程: a:执行初始化语句 b:执行判断条件语句 如果这里是true,就继续 如果这里是false,循环就结束 c:执行循环体语句 d:执行控制条件语句 e:回到b 3.1.3)注意事项 a:判断条件语句无论简单还是复杂,结果是boolean类型 b:循环体语句如果是一条,可以省略大括号,但是不建议 c:有分号就没有左大括号,有左大括号就没有分号 3.1.4)案例 求1-100的和,求1-100的偶数和,求1-100的奇数和 classQiuHe{ publicstaticvoidmain(String[]args) { //求1-100之间偶数和 intsum2=0; for(intx=1;x<=100;x++){ if(x%2==0) sum2+=x; } System.out.println("1-100的偶数和是"+sum2); System.out.println("----------------------"); intsum3=0; for(intx=0;x<=100;x+=2) { sum3+=x; } System.out.println("1-100的偶数和是"+sum3); } } 3.2)while循环 3.2.1)基本格式 while(判断条件语句) { 循环体语句; } 扩展格式: 初始化语句; while(判断条件语句){ 循环体语句; 控制条件语句; } 3.2.2)for和while的区别 a:使用上的区别 for语句的那个控制条件变量,在循环结束后不能在使用了。 而while的可以继续使用。 b:理解上的区别 for适合于一个范围的判断 while适合次数不明确的 举例:吃葡萄 3.2.3)案例珠穆朗玛峰问题 classJavaTest1{ publicstaticvoidmain(String[]args){ intcount=0; intend=884800; intstart=1; while(start<end) { //只要每次变化的厚度没有超过珠穆朗玛峰高度,就折叠,统计变量++ count++; //折叠一次有什么变化呢?厚度是原来的二倍 start*=2; } System.out.println(count); } } 3.3)do...while循环 3.3.1)基本格式 do { 循环体语句; }while(判断条件语句); 扩展格式: 初始化语句; do { 循环体语句; 控制条件语句; }while(判断条件语句); 通过查看格式,我们就可以看出其实三种循环的格式可以是统一的。 3.3.2)三种循环的区别 a:do...while循环至少执行一次循环体 b:for和while必须先判断条件是否是true,然后后才能决定是否执行循环体 3.3.3)循环使用的注意事项(死循环) A:一定要注意修改控制条件,否则容易出现死循环。 B:最简单的死循环格式 a:while(true){...} b:for(;;){} 4、控制跳转语句 4.1)break:中断的意思 A:用在循环和switch语句中,离开此应用场景无意义。 B:作用 a:跳出单层循环 //控制跳转语句 //break:中断 continue:继续 return:返回 //break:中断的意思,使用场景 //A:switch 语句中 B:循环语句中(循环语句中加入了if判断的情况) //离开上面两个场景,无意义。 classJavaTest1{ publicstaticvoidmain(String[]args){ for(intx=0;x<10;x++) { if(x==2){ //作用:跳出单层循环 break; } System.out.println("break"); } System.out.println("break1"); } } b:跳出多层循环,需要标签语句的配合 4.2)continue:继续 A:用在循环中,离开此应用场景无意义。 B:作用 a:跳出单层循环的一次,可以继续下一次 classJavaTest1{ publicstaticvoidmain(String[]args){ for(intx=0;x<10;x++) { if(x==2){ //作用:跳出单层循环 continue; } System.out.println(x); } System.out.println("continue"); } } 4.3)return:返回 A:用于结束方法的,后面还会在继续讲解和使用。 B:一旦遇到return,程序就不会在继续往后执行。 classJavaTest1{ publicstaticvoidmain(String[]args){ for(intx=0;x<10;x++) { if(x==2){ //不在执行reture return; } System.out.println(x); } System.out.println("return"); } }