流程
顺序结构
选择结构
判断语句
单if语句:
if(关系表达式){
语句体;
}
执行流程:
1.首先判断关系表达式看其结果时true还是false。
2.如果是true就执行语句体。
3.如果是false就不执行语句体。
标准if-else语句:
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程:
1.首先判断关系表达式看其结果时true还是false。
2.如果是true就执行语句体1。
3.如果是false就执行语句体2。
扩展if-else语句:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else if (关系表达式n){
语句体n;
}else {
语句体n+1;
}
执行流程:
1.首先判断关系表达式1看其结果时true还是false。
2.如果是true就执行语句体1。
3.如果是false就判断关系表达式2看其结果时true还是false。
4.如果是true就执行语句体2。
5.如果是false就继续判断关系表达式n看其结果。
选择语句switch
switch(表达式){
case 常量值1:
语句体1;
break;
case 常量值1:
语句体1;
break;
...
default:
语句体n+1;
break;
}
执行流程:
1.首先计算出表达式的值。
2.其次和case依次比较,一旦有对应的值,就会执行相应的语句。在执行的过程中,遇到break就会结束。
3.最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束。
注意事项:
1.多个case后面的值不可以重复。
2.switch后面的小括号中只能是下列数据类型:
基本数据类型:byte/short/char/int
引用数据类型:String字符串、enum枚举
3.switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。【匹配到哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止】
循环语句
循环语句1–for
for(初始化表达式1;布尔表达式2;步进表达式4){
循环体3;
}
执行流程:
1.执行顺序1、2、3、4>2、3、4>2、3、4…2不满足为止。
2.1负责完成循环变量初始化。
3.2负责判断是否满足循环条件,不满足则跳出循环。
4.3具体执行的语句。
5.4循环后,循环条件所涉及变量的变化情况。
循环语句2–while
【标准格式】
while(条件判断){
循环体;
}
【扩展格式】
初始化表达式1
while(布尔表达式2){
循环体3;
步进表达式4;
}
执行流程:
1.执行顺序1、2、3、4>2、3、4>2、3、4…2不满足为止。
2.1负责完成循环变量初始化。
3.2负责判断是否满足循环条件,不满足则跳出循环。
4.3具体执行的语句。
5.4循环后,循环变量的变化情况。
循环语句3–do…while
【标准格式】
do{
循环体
}while(条件判断);
【扩展格式】
初始化表达式1;
do{
循环体3;
步进表达式4;
}while(布尔表达式2);
执行流程:
1.执行顺序1、3、4>2、3、4>2、3、4…2不满足为止。
2.1负责完成循环变量初始化。
3.2负责判断是否满足循环条件,不满足则跳出循环。
4.3具体执行的语句。
5.4循环后,循环变量的变化情况。
三种循环的区别
1.如果条件判断从来没有满足过,那么for循环和while循环会执行0次,但是do-while循环会执行至少一次。
2.for循环的变量在小括号内定义,只有循环内部才可以使用。while和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。
循环控制
break语句
1.可以用在switch语句中,一旦执行,整个switch语句立刻结束。
2.可以写在循环语句当中,一旦执行,整个循环语句立刻结束。打断循环。
关于循环的选择的建议:
凡是次数确定的场景多用 for循环,否则多用 while循环。
continue语句
一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环。
死循环
永远停不下来的循环叫做死循环。
while(true){
循环体;
}
嵌套循环
for(初始化表达式1;循环条件2;步进表达式7){
for(初始化表达式3;循环条件4;步进表达式6){
执行语句5;
}
}
总共的循环次数=外循环次数*内循环次数
执行流程:
1.执行顺序1、2、3、4、5、6>4、5、6>7、2、3、4、5、6>4、5、6不满足为止。
2.外循环一次,内循环多次。