流程控制语句
分类
- 顺序结构
- 分支结构
- 循环结构
顺序结构
按照代码的先后顺序依次执行,没有什么特定的语法结构,程序中最基本最简单的流程控制
分支结构 if语句
if 语句格式1
if(关系表达式){
语句体
}
表达式满足条件为true就进入if 执行语句体,不满足条件为false不执行语句体
if 语句体格式 2
if(关系表达式) {
语句体1
}else {
语句体2
}
满足条件执行语句体1,不满足条件执行语句体2
if 语句体格式 3
if(关系表达式1){
语句体1
}else if(关系表达式2){
语句体2
}else if(关系表达式n){
语句体3
}
....
else{
语句体4
}
满足表达式1执行语句体1,不满足进入下一个else if中的表达式2,满足执行语句体2,不满足进入下一个else if判断,满足执行语句体,不满足继续进入,直到最后一个else中执行语句体
分支结构 switch语句
switch (表达式) {
case 1 :
语句体1;
break;
case 2 :
语句体2;
break;
...
default:
语句体n;
break;
}
把表达式的值和case里面的匹配,匹配上就会执行相应的语句体,在执行完语句体后,遇到break就会结束,如果没有匹配上就进入default执行语句体,语句体后面必须跟着break,否则会发生case穿透,虽然不写break不会发生语法报错,case穿透就是,执行完匹配上的语句体,没有break跳出,那么就会进入下一个case执行语句体,直到碰到break或者全部语句体执行完。
循环结构
for循环、while循环,do while循环
for循环
for(初始化语句,判断语句,控制语句) {
循环语句体
}
for(int i = 0; i<=10; i++) {
System.out.println(i);
}
for循环就是先看初始化的值,满不满足条件,满足进入循环执行语句体,再执行控制语句,再次用初始化值判断满不满足条件,不满足条件不进入循环,循环结束。
while循环
初始化语句;
while (条件判断语句){
循环体语句;
条件控制语句;
}
int i = 0;
while (i <= 5) {
System.out.println(i);
i++;
}
while循环,先定义一个初始化值,用判断语句判断满不满足条件,满足为true进入while循环执行语句体,再执行条件控制语句,再次判断,不满足不进入循环
do…while循环
初始化语句;
do {
循环体语句;
条件控制语句;
}while(条件判断语句);
int i = 0;
do {
System.out.println(i);
i++;
}while(i<=5);
do…while循环,会先执行循环体语句,再执行条件控制语句,最后再去进行条件判断,如果满足则继续循环,不满足就退出循环
for循环和while循环都会先进行判断条件是否成立,再决定是否进入循环
do…while循环直接先执行一次循环,再进行判断决定后续是否进入循环
for循环中,初始化值在for循环的结构中,只在循环内有效,出了循环就失效了,也就是i的值,出了循环体就访问不到了,但是while循环定义初始化值是在外面定义的,不是循环里面,所以i值是一直能访问到的
死循环的三种格式
for(;;){}
while(true){}
do {} while(true)
控制跳出循环的语句
break; 直接跳出循环,结束掉循环
continue; 跳出本次循环,继续下一次循环,这个只能在循环中使用,if,switch这种分支结构中用不了的
for循环的嵌套
两个for循环,内部的for循环就是外部for循环的循环体,外面for循环执行一次,内部for循环就要执行一圈,全部执行完才会执行再执行一次外部for循环
public static void main(String[] args) {
//外循环控制小时的范围,内循环控制分钟的范围
for (int hour = 0; hour < 24; hour++) {
for (int minute = 0; minute < 60; minute++) {
System.out.println(hour + "时" + minute + "分");
}
System.out.println("--------");
}
}
冒泡排序也是用双重for循环写的,有兴趣的自行搜索