快速回忆
- 判断语句的格式有哪些
- 选择语句的格式
- 循环语句的格式
- 跳转语句的使用场景及作用
知识讲解
4.1 流程控制语句
在Java程序运行时,在主要执行的main方法中,程序会默认根据代码编写的顺序,从上到下运行。在一个程序执行的过程中,对程序运行的顺序造成影响的语句就是流程控制语句。
流程判断语句也是对于现实中某些行为的抽象。常见的Java流程控制语句有判断语句、选择语句、循环语句和跳转语句。
流程判断语句可以根据不同的情况,做出相应的响应和决策,实现复杂的逻辑和功能(业务逻辑),换言之,相比于顺序执行,流程控制语句让计算机懂得了“思考判断”,而所建立的模型大小也决定了计算机的智商。
4.2 判断语句
4.2.1 if
首先判断关系表达式看其结果是true还是false。
如果是true就执行语句体,如果是false就不执行语句体。
if(关系表达式){
语句体;
}
4.2.2 if...else
首先判断关系表达式看其结果是true还是false。
如果是true就执行语句体1,否则若为false就执行语句体2
if(关系表达式) {
语句体1;
}else {
语句体2;
}
4.2.3 if..else if...else
首先判断关系表达式1看其结果是true还是false, 如果是true就执行语句体1,否则判断关系表达式2, 如果是false就继续判断关系表达式,循此往复直至程序到达出口。
if (判断条件1) {
执行语句1;
} else if (判断条件2) {
执行语句2;
}
...
else if (判断条件n) {
执行语句n;
} else {
执行语句n+1;
}
4.3 选择语句
4.3.1 switch
首先计算出表达式的值,其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
switch(表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
4.3.2 switch 表达式的数据类型
switch语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),JDK7后可以接收字符串。byte,short,int可以自动转换为int类型。
4.3.3 case的穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。
public static void main(String[] args) {
int i = 5;
switch (i){
case 0:
System.out.println("执行case0");
break;
case 5:
System.out.println("执行case5");
case 10:
System.out.println("执行case10");
default:
System.out.println("执行default");
}
//i=5时,则打印
//执行case5
//执行case10
4.3.3 default的位置
switch中的default关键字可以出现在switch的任意位置,并可以省略,但如果放在第一行则程序无论如何都会执行。
4.4 循环语句
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
①初始化表达式:负责完成循环变量初始化
②布尔表达式:负责判断是否满足循环条件,不满足则跳出
③步进表达式:具体执行的语句
④循环体:循环后,循环条件所涉及变量的变化情况
4.4.1 for
for循环使用固定的计数器控制循环次数,常用于已知次数的循环。
for循环在循环前会初始化计数器,后续通过检验计数器是否仍然满足条件来决定是否继续循环。
for( ①初始化表达式; ②布尔表达式; ③步进表达式){
④循环体
}
执行顺序:①②③④→②③④→②③④…→②不满足条件则跳出循环
4.4.2 while
while循环使用一个条件来控制循环是否执行,常用于未知循环次数但满足条件的场景。
while循环需要将步进表达式放入循环体中,手动更新条件状态,避免无限循环。
①初始化表达式
while(②布尔表达式){
③循环体
④步进表达式
}
执行顺序:①②③④→②③④→②③④…→②不满足条件则跳出循环
4.4.3 do...while
do...while循环类似于while循环,区别在于至少执行一次循环体。
①初始化表达式
do{
③循环体
④步进表达式
}while(②布尔表达式);
执行顺序:①③④→②③④→②③④…→②不满足条件则跳出循环
4.4.4 联系&区别
联系:
1.都可以重复的执行某一段代码
2.循环体内可以包含任意多的语句,并且有单独的循环体作用域
3.都可使用break和continue控制循环的执行
区别:
1.循环结构的表达式不同,并且步进表达式的位置也不同
2.使用场景不同,循环次数的已知时候使用推荐使用for,循环次数未知的时推荐使用while
4.5 跳转语句
4.5.1 break
break用于终止switch或者循环,单独使用没有意义
public static void main(String[] args) {
for (int i = 1; i<=10; i++) {
//需求:打印完两次HelloWorld之后结束循环
if(i == 3){
break;//终止循环
}
System.out.println("HelloWorld"+i);
}
}
4.5.2 continue
continue结束本次循环,继续下一次的循环,同break一样,离开循环语句单独使用无意义
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
//需求:不打印第三次HelloWorld
if(i == 3){
continue;
}
System.out.println("HelloWorld"+i);
}
}