2.5 流程控制
2.5.1 顺序结构
- main方法 依次执行里面的代码
- 分支结构(if、switch)
- 循环结构(while、do…while、for)
2.5.2 if分支结构
- 单分支结构
if(expression){
// statement;
}
执行顺序:
- 先判定表达式的值
- 如果表达式的值是true 则执行if中的执行语句 ,继续执行后续代码
- 如果表达式的值是false,则跳过整个if单分支结构 执行后续逻辑
注意事项:
-
表达式的结果是一个boolean的值
-
分支较少在很多业务场景下不太适用
-
多分支结构
if(expression){
// statement 1;
}else{
// statement 2;
}
执行顺序:
- 先判定表达式1的值
- 如果表达式1的值是true 则执行执行语句1 ,整个对分支执行结束
- 如果表达式1的值是false,判定表达式2的值。。。一次类推
- 如果所有的表达式都不满足,则执行else中的执行语句
注意事项:
- 小心别让前面的条件吞掉后面的条件。
if语句与条件运算符区别:
- 条件运算符肯定有结果,但是if结构不一定能有结果
- 条件运算符结果只能为值1|值2,if语句体可以存在多条指定语句
- if结构功能更强大,但是条件运算符结构简单,效率高
- 推荐简单的使用条件运算符,复杂的使用if
2.5.3 Switch分支结构
switch(表达式){
case 值1:
执行语句1;break;
case 值2:
执行语句2;break;
case 值3:
执行语句3;break;
。。。。。
default:
执行语句n;break;
}
执行顺序:
1、计算表达式的值
2、依次匹配对应的case,如果匹配到了,执行对应的执行语句 整个switch执行结束
3、如果没有case与之匹配,执行末尾的default
注意事项:
1、表达式的结果只能是int、short、byte、char和对应的包装类以及jdk1.5之后支持enum枚举和
jdk1.7之后支持了 String 。
2、一定要记得给switch中的执行语句加break防止穿透,在某些特定情况下可以是用case穿透的特性,
降低代码量。
jdk17 对于switch的增强
switch(num){
case 12,1,2->System.out.println("冬天 你就像那冬天里的一把火");
case 3,4,5-> System.out.println("春天 春天在哪里呀~");
case 6,7,8->System.out.println("夏天 夏天夏天悄悄过去留下小秘密");
case 9,10,11 ->System.out.println("秋天 秋天不回来");
}
2.5.4 while循环
while(expression1){ //表达式
// loop-statement ; 循环体
}
执行顺序:
- 先判定表达式的值
- 如果表达式的值是true 则执行循环体一次,继续判定表达式的值
- 如果表达式的值是false,则跳过循环体执行后续代码
注意事项:
- 大多数情况下编写的循环都是正常的, 不是死循环(死循环是由意义)
- 在循环体中存在改变表达式的值的语句。
- 如果不知道循环次数 使用while循环
2.5.5 for循环
// 死循环
for(;;){
}
for(;expression;){
}
for(循环变量的声明;循环条件;){
//循环体
改变循环条件的表达式;
}
执行顺序:
- 声明循环变量,判定循环条件 如果条件为true 执行循环体一次
- 执行改变循环条件的表达式 继续判定循环条件
- 直到循环条件为false循环结束
注意事项:
- 知道循环次数使用for循环
2.5.6 do-while
do{
循环体
}while(表达式);
执行顺序:
- 先执行循环体一次
- 判定循环条件 如果条件为true 在执行一次 直到循环条件为false
注意事项:
- 记得分号!!!