JavaSE-03 [流程控制语句]
第一章 流程控制
1.1 流程概述
在一个程序执行的过程中,每条语句的执行顺序对程序的结果是由直接影响的,也就是,语句的流程对运行结果有着直接的影响,所以,必须清楚知道每条语句的执行流程,并且,我们还需要通过控制语句的执行顺序来实现我们要完成的特定功能
1.2 顺序结构
- 顺序结构:就是根据编写的程序,从上到下的执行。如:
public static void main(String[] args) {//顺序执行:根据编写的程序,自上而下的执行。int a = 1;int b = 2; int c = a+b;System.out.println(c);
}
- 流程图

第二章 判断语句
2.1 判断语句—if
- 格式
if(关系表达式){语句体;
}
- 执行流程
- 1、先判断关系表达式是true还是false
- 2、如果是true,执行语句体,否则不执行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xrsgONYf-1686187769998)(photo/JavaSE03_流程控制语句.assest/1664093306015.png)]
- 案例—Demo1_if
public class Demo1_if {public static void main(String[] args) {System.out.println("准备开始");int a = 10;int b = 20;if (a>b){System.out.println("a大于b");}int c = 10;if (a==c){System.out.println("a等于c");}System.out.println("程序执行完毕");}
}
2.2 判断语句—if…else
- 格式
if(判断语句){执行语句1;
}else{执行语句2;
}
- 执行流程

- 案例:Demo02_if_else
public class Demo02_if_else {public static void main(String[] args) {//判断奇偶数//键盘输入数据int a = new Scanner(System.in).nextInt();//判断奇偶数if (a%2==0){System.out.println(a+":a是偶数");}else {System.out.println(a+":a是奇数");}}
}
2.3 判断语句—if…else if … else
- 语句格式
if(判断条件1){执行语句1;
}else if(判断条件2){执行语句2
}
...
}else if(判断条件3){执行语句n;
}else{执行语句m;
}
- 执行流程
- 1、首选判断关系表达式1,是否为true,或false
- 2、如果是true‘,执行语句体1,
- 3、如果是false,再判断关系式2是否为true。或false
- 4、如果是truw,执行语句体2
- 5、…以此类推执行

- 案例:Demo03_if_elseif_else
public class Demo03_if_elseif_else {public static void main(String[] args) {//判断成绩大小int score = new Scanner(System.in).nextInt();if (score>90){System.out.println("成绩优秀");}else if (score>=80 && score<90){System.out.println("成绩好");}else if (score>=70 && score<80){System.out.println("成绩良好");}else if (score>=60 && score<70){System.out.println("成绩及格");}else {System.out.println("不及格,叫家长来");}}
}
2.4 if语句和三元运算符
在谋陷简单的应用中,if语可以代替三元运算符使用
public class Demo04 {public static void main(String[] args) {//三元运算符实现int a = 44;int b = 33;int num1 = a>b?a:b;System.out.println(num1);//if-else实现int m = 200;int n = 100;int num2;if (m>n){num2 = m;}else {num2 = n;}System.out.println(num2);}
}
第三章 选择语句
3.1 选择语句–switch
- switch的语句格式
switch(表达式){case 常量值1 : 语句体1;break;case 常量值2 : 语句体2;break;case 常量值3 : 语句体3;break;...default : 语句体n;break;
}
-
执行流程:
- 1、计算出表达式的值
- 2、依次和case对应的常量值比较,一旦有对应的值,就执行相应的语句,执行过程中,遇到break结束
- 3、如果所有的case对应常量值与表达式都不匹配,就执行default语句体,然后程序结束
-
案例:Demo05_Switch
public class Demo05_Switch {public static void main(String[] args) {//案例:判断星期几int num = new Scanner(System.in).nextInt();switch (num){case 1: System.out.println("周一");break;case 2: System.out.println("周二");break;case 3: System.out.println("周三");break;case 4: System.out.println("周四");break;case 5: System.out.println("周五");break;case 6: System.out.println("周六");break;case 7: System.out.println("周日");break;default:System.out.println("输入错误");break;//此处break可以省略,推荐保留不省略}}
}
3.2 case的穿透性
-
switch语句使用的注意事项:
1、多个case后面的常量值不能重复
2、switch小括号中的数据类型:
基本数据类型:byte、short、int、char
引用数据类型:字符串,枚举
3、switch的格式:比较灵活,前后顺序可以颠倒,break可以省略
匹配到哪个case就从哪个位置向下执行,直到遇到break,或者整体代码结束 -
案例:Demo06_SwitchNotice
public class Demo06_SwitchNotice {public static void main(String[] args) {int num = 2;switch (num){case 1:System.out.println("孙悟空");break;case 2:System.out.println("猪八戒");//break;//没有break,则会穿透后续的casecase 3:System.out.println("沙和尚");break;case 4:System.out.println("唐僧");break;default:System.out.println("西天取经");break;}}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bLB19BZj-1686187770015)(photo/JavaSE03_流程控制语句.assest/1664099132918.png)]
第四章 循环语句
4.1 循环概述
循环语句可以在满足条件的情况下,反复执行某一段代码,这样被重复执行的代码被称为循环体语句,
当反复执行这个循环时,需要在合适的时候将循环判断条件修改为false,从而结束循环,否则将一直执行下去
形成死循环,
4.2 循环语句–for
- 格式:
for(初始化表达式1;布尔表达式2;步进表达式4){循环体3;
}
- 执行流程
- 1、执行顺序1234,直到2不满足为止
- 2、表达式1:负责完成循环变量初始化
- 3、表达式2:负责判断是否满足循环条件,不满足则跳出循环
- 4、循环体3:具体执行的代码
- 5、表达式4:循环后,循环条件所涉及变量的变化情况
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XhQH5KIa-1686187770023)(photo/JavaSE03_流程控制语句.assest/1664101785534.png)]
- 案例:Demo07_For
public class Demo07_For {public static void main(String[] args) {System.out.println("程序开始执行");for (int i = 1;i<=100;i++){//循环体System.out.println("我是第:"+i+" 次循环");}System.out.println("程序执行完毕");}
}
4.3 循环语句–while
- 格式
初始化表达式1;
while(布尔表达式2){循环体3;步进表达式4;
}
- 执行流程:分为标准化
- 1、执行顺序:1234–234–234-,直到2不满足为止
- 2、初始化表达式1:负责完成循环变量的初始化
- 3、表达式2:负责判断是否满足条件,不满足则跳出循环
- 4、循环体3:具体语句的执行
- 5、步进表达式4:循环后,循环变量的变化情况
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PIhZN49s-1686187770024)(photo/JavaSE03_流程控制语句.assest/1664101273848.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nzGGf4WL-1686187770024)(photo/JavaSE03_流程控制语句.assest/1664101785534.png)]
- 案例:Demo08_While
public class Demo08_While {public static void main(String[] args) {//扩展格式//初始化语句int i = 1;//判断条件while (i<=100){//循环体System.out.println("我被循环的次数是:"+i);//步进语句i++;}//标准化格式while (i<=100){//条件判断//循环体System.out.println("此次循环结束");}}
}
4.4 循环语句–do…while
- 格式
初始化表达式1;
do{循环体2;步进表达式3;
}while(布尔表达式4)
- 执行流程
- 1、执行顺序:1234,直到不满足表达式4为止
- 2、表达式1:负责完成循环变量的初始化
- 3、循环体2:具体语句的执行
- 4、表达式3:循环后,循环变量的变化情况
- 5、表达式4:负责判断是否满足条件,不满足则跳出循环
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NIQpUPvt-1686187770026)(photo/JavaSE03_流程控制语句.assest/1664101406676.png)]
- 案例:Demo09_DoWhile
public class Demo09_DoWhile {public static void main(String[] args) {//初始条件int i = 1;do {//循环体System.out.println("我是do执行的第:"+i+"次");//步进语句i++;}while (i<=20);//判断条件}
}
4.5 循环语句的区别
- 1、如果条件判断从不满足,那么for和while执行0次,但是do-while会执行一次
- 2、for循环的变量在小括号中定义,只有循环内部才能使用
- 3、while和do-while的初始化数据本身就在循环的外面
4.6 循环结束用法
break语句的用法
- 1、可以使用在switch语句当中,一旦执行,整个switch语句立即结束
- 2、可以使用在循环语句中,一旦执行,整个循环结束
/*** break的用法* 1、可以使用在switch语句当中,一旦执行,整个switch语句立即结束* 2、可以使用在循环语句中,一旦执行,整个循环结束*/
public class Demo11_Break {public static void main(String[] args) {for (int i=1;i<10;i++){if (i==5){break;//若条件满足,那么就会结束循环}System.out.println("此时循环到的次数是"+i);}}
}
continue 语句的用法
- 1、一旦执行,立即跳过当前循环剩余内容,开始下一轮循环
/*** continue的用法* 一旦执行,立即跳过当前循环剩余内容,开始下一轮循环*/
public class Demo12_Continue {public static void main(String[] args) {for (int i=1;i<10;i++){if (i==5){continue;//表示跳出当前循环,执行下一轮循环}System.out.println("此时的循环次数是:"+i);}}
}
第五章 循环语句加强
5.1 死循环
- 死循环: 就是循环中的条件永远为true,能执行但不会停下来的循环
- 死循环出现的原因:程序漏洞、程序员刻意操作
/*** 死循环:能执行但不会停下来的循环* 格式:* while(true){* 循环体* }*/
public class Demo13_SiXunHuan {public static void main(String[] args) {while (true){int a = 10;System.out.println(a+=10);//ctrl+c停止运行}}
}
5.2 嵌套循环
- 嵌套循环:是指一个循环的循环体是另一个循环,比如for循环qiantaofor循环,总循环次数 = 外循环次数*内循环次数
- 嵌套循环格式:
for(初始化表达式1;循环条件2;步进表达式7){for(初始化表达式3;循环条件4;步进表达式6){循环体5;}
}
-
嵌套循环执行的流程
- 执行顺序:123456—456—723456—456
- 外循环一次,内循环多次
-
案例:Demo14_NestingFor
/*** 嵌套循环* 打印5*10的矩形*/
public class Demo14_NestingFor {public static void main(String[] args) {//外循环:外循环循环5次for (int i=1;i<=5;i++){//内循环:内循环在外循环循环1次的基础上,都要进行循环10次for (int j=1;j<=10;j++){System.out.print("*");}System.out.println("\n");}}
}
- 1、使用嵌套for循环打印一个 正三角
- 2、打印一个直角三角形(倒着)
- 3、打印99乘法表
行的流程
-
执行顺序:123456—456—723456—456
-
外循环一次,内循环多次
-
案例:Demo14_NestingFor
/*** 嵌套循环* 打印5*10的矩形*/
public class Demo14_NestingFor {public static void main(String[] args) {//外循环:外循环循环5次for (int i=1;i<=5;i++){//内循环:内循环在外循环循环1次的基础上,都要进行循环10次for (int j=1;j<=10;j++){System.out.print("*");}System.out.println("\n");}}
}
- 1、使用嵌套for循环打印一个 正三角
- 2、打印一个直角三角形(倒着)
- 3、打印99乘法表