流程控制语句分类
顺序结构
顺序结构概述
按照代码的编写顺序自上而下执行
选择结构
if选择语句
`语句定义格式1`:
if(关系表达式){
语句体;
}
`语句定义格式2`:
if(关系表达式){
语句体1;
}else{
语句体2;
}
`语句定义格式3`:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else if(关系表达式3){
语句体3;
}...
`语句定义格式4`:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else if(关系表达式3){
语句体3;
}...{
语句体n;
}else{ // 当上面的所有if中关系表达式结果都是false的情况下,执行else中的语句
语句体n+1;
}
switch选择语句
语句定义格式
:
switch(表达式){ // byte,short,int,char,String,枚举
case 常量值1:
表达式1;
break;
case 常量值2:
表达式2;
break;
....
default:
表达式n;
break;
}
运行流程
:
(1) 严格按照先自上而下匹配case,当匹配到对应的case后,执行其中语句体,然后遇到break,结束整个switch语句;
(2) 当没有对应的case匹配的时候,就会执行default中的语句体,当遇到break的时候,结束整个语句体,和default语句位置无关
使用switch语句的注意事项:
1、小括号中的表达式必须是byte,short,int,char,String,枚举其中一种,其他的不行
2、case后面匹配的内容必须是一个常量值,不能是一个变量
3、default语句必须要有吗?可以没有,但是可能程序不够严谨
4、default语句位置必须是在所有的case后面吗?不一定,严格按照执行流程顺序
5、break语句能不能不写?可以,但是会造成switch语句穿透,结果可能不是我们想要的
public class SwitchTest2 {
public static void main(String[] args) {
int x = 2;
int y = 3;
switch(x){
default:
y++;
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);
}
}
循环结构
for循环结构
语句定义格式:
for(初始化条件语句;判断条件语句;控制条件语句){
循环体内容
}
while循环
语句定义格式:
初始化条件语句;
while(判断条件语句){
循环体内容;
控制条件语句;
}
while循环可以和for循环等价转换。
注意:
1、以后遇到明确范围的需求的时候,使用for循环
2、不明确循环范围的时候,使用while循环
3、从内存使用效率来说,while循环结束后,定义的变量依旧是在的,占用内存,而for循环定义的变量随着for循环的结束等待被回收,推荐用for循环
4、从循环的次数来说,for循环和while循环的次数是一样的
do...while循环
语句定义格式:
初始化条件语句;
do{
循环体内容;
控制条件语句;
}while(判断条件语句);
注意
:while循环是先进行一次判断,然后再进行循环体内容
而do...while循环,无论是否符合条件,都会先进行一次循环体内容,然后再根据判断条件来决定是否继续执行。写程序优先考虑for循环,再考虑while循环,最后考虑do…while循环。
跳转控制语句
break
:打破 结束 破裂
break的使用场景:
在选择结构switch语句中
在循环语句中
break的作用:结束当前循环
continue
: 继续
注意:
1、结束当次循环,继续后续循环
2、单独使用没有任何意义,需要在循环的内部中使用
return
: 返回
注意
:
1、return是作用在方法的内部中当做最后一个语句执行的
2、主要作用是用于结束一个方法的,返回一个返回值。
3、一个方法只能有一个return生效
今天我们循环结构就讲到这里了,下次再见!