流程控制
在一个程序执行过程中,每一个语句都是顺序执行的,对程序的结果有直接的影响,也就是说,程序的流程对我们的结果有直接的影响,所以我们必须要搞清楚,我们的各个语句的执行流程,很多时候我们要通过控制语句的执行顺序来实现我们的实现我们的功能。
1、顺序执行
2、判断语句
2.1 判断语句if
格式:
if(关系表达式){
语句体;
}
程序语句;
执行流程:首先先判断关系表达式结果,如果他的结果是true,这个时候会执行语句体,如果是false,那么不执行语句体。
2.2 判断语句if…else
格式:
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行顺序:
首先判断关系表达式看其结果,如果是true,那么执行语句体1,如果false,执行语句体2。
2.3 判断语句if…else if…
格式:
if(关系表达式1){
语句体1
}else if(关系表达式2){
语句体2;
}else if(关系表达式3){
语句体3;
}else{
语句体4;
}
执行流程:
首先判断关系表达式1,如果是true,执行语句体1,如果是false,那么就判断关系表达式2,如果true,那么在执行语句体2,如果是false,那么就判断关系表达式3,如果是true,那么执行语句体3,如果是false,那么执行语句体4。
2.4 if语句和三元运算互换
3、选择语句
switch语句
switch语句格式:
switch(表达式){
case 常量值1: 语句体;
break;
case 常量值2: 语句体;
break;
case 常量值3: 语句体;
break;
default: 语句体;
break;
}
执行流程:
首先判断一下表达式的值,其次,和case进行比较,一旦对应上,就会执行相关的语句,在执行过程中,遇见break就会结束,最后,如果所有的case和表达式不匹配,就会执行default语句体的语句,然后程序结束。
switch语句的类型
表达式的类型:byte、short、int、char、enum(枚举)
jdk1.7版本后可以接受字符串
case穿透性
在switch语句中,如果case后面不写break,将出现穿透现象,也就是不会判断下一个case的值,直接向后行,直到遇见break,或者整体switch结束。
4、循环语句
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段重复的代码执行称为循环。当我反复执行这个循环的,需要在合适的场合给他把判断条件修改为false,从而结束我们的循环,否则循环会一直执行下去。
4.1 for循环(重点)
格式:
for(初始化表达式1;布尔类型表达式2;步进表达式4){
循环体3
}
执行流程:
1–2--3—4---2–3---------一直到了不满足我们的布尔表达式结束。
初始化表达式1:负责完成循环变量的初始化
布尔类型表达式2:负责判断是否满足循环条件,不满足就退出循环。
循环体3:具体的执行语句。
步进表达式:循环后,循环条件涉及到的变量的变化情况。
4.2 while循环(重点)
当没有循环次数的时候考虑使用while循环
格式:
初始化表达式1
while(布尔表达式2){
循环体3;
步进表达式4;
}
执行流程:
1----2----3----4----2----3----4— 执行不满足我们的布尔表达式的时候。
初始换表达式1:负责循环变量的初始化。
布尔类型表达式2:负责判断是否满足循环条件,不满足择退出。
步进表达式3:循环变量的变化情况。
4.3 do…while循环(不常用)
初始化表达式0
do{
循环体1;
步进表达式2;
}while(布尔表达式3);
执行流程:
1—2-----3----1-----2—3---直到我们的布尔类型表达式不满足条件,循环结束。
循环体1:具体的执行语句。
步进表达式2:负责改变我们循环变量。
布尔类型表达式3:就是我们的判断条件。
do…while循环的特点:无条件执行一次循环,即使我们将循环条件写成false。这样循环有风险,初学者不建议使用,do…while。
4.4 循环语句的区别
控制条件语句所控制的变量,在for循环结束以后,就不能在使用了,而while循环结束以后还可以使用我们的循环变量,原因是for循环结束,该变量从内存中消失,能够提高我们的内存的使用率。
在后面我们遇见题目,先判断该题是否有循环次数,如果能,就选择for循环,如果不能,选择我们的while循环。
5、跳转语句
break
使用场景:终止我们的switch或者循环的时候。如果离开的我们的实用场景,没有任何意义。
continue
使用场景:结束本次循环,继续下一次循环。
扩展
死循环:
也就是我们的循环中条件运算是true,死循环是永远不会结束的循环,比如while(true){}。
在后期开发中,会使用死循环的场景,比如我们需要读取用户的输入的数据,但是用户的输多输少我们不知道,也只能使用死循环,当用户不想输入数据的时候,就可以结束我们的循环。用我们的break的语句去结束。
嵌套循环:
是一个循环的循环体中还有另外一个循环,比如我们的for循环中还有一个循环,循环的总次数就是我们的外循环次数*内循环的次数。
嵌套循环的格式:
for(初始化表达式1;循环条件2;步进表达式){
循环体1
for(初始化表达式2;循环条件3;步进表达式){
循环体
}
}