顺序结构
正常程序都是自上而下顺序运行(除非特殊情况)
选择结构
if语句
if(关系表达式){
语句体;
}
执行流程:如果关系表达式是true,就执行语句体;如果关系表达式是false,就不执行语句体,走到结束}后面的语句
if…else
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程:如果关系表达式是true,就执行语句体1;如果关系表达式是false,就执行语句体2;
if…else if…else
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
.......
}else if(关系表达式n){
语句体n;
} else{
上面都是false,走这里;
}
执行流程:如果关系表达式1是true,就执行语句体1;如果关系表达式1是false,就继续判断关系表达式2,如果关系表达式2是true,执行语句体2;如果关系表达式2是false,就继续判断关系表达式3,…如果关系表达式1-n都是false,就执行else
switch
格式:switch(表达式){
case 值1:
语句1;
break;
case 值2:
语句2;
break;
.......
case 值n:
语句n;
break;
default:
语句default;
break;
}
执行流程:如果表达式是值1,走语句1;如果表达式是值2,走语句2;如果表达式是值n,走语句n;如果表达式都没有值,走语句default;
循环控制语句
for循环
for(初始化语句;判断语句;控制条件语句){
循环体;
}
其他语句;
注意
for(;😉{} 中的两个 ; 是不能多也不能少的。循环条件必须是 boolean 类型。
如果循环条件语句 ② 省略的话,就默认为循环条件成立
执行流程
第一步:执行初始化语句 ① ,完成循环变量的初始化;
第二步:执行循环条件语句 ② ,看循环条件语句的值是true ,还是 false ;如果是 true ,执行第三步;如果是 false ,循环语句中止,循环不再执行。
第三步:执行循环体语句 ③ ;
第四步:执行迭代语句 ④ ,针对循环变量重新赋值;
第五步:根据循环变量的新值,重新从第二步开始再执行一遍;
while循环
基本格式
while(true){
循环体语句;
if(当满足一定条件时){
break/return; //终止当前的循环
或System.exit(0); // jvm退出
}
}
扩展格式
初始化语句①;
while (循环条件语句②) {
循环体语句③;
迭代语句④;
}
执行流程
第一步:执行初始化语句 ① ,完成循环变量的初始化 第二步:执行循环条件语句 ② ,看循环条件语句的值是true ,还是 false ;如果是 true ,执行第三步;如果是 false ,循环语句中止,循环不再执行;
第三步:执行循环体语句 ③ ;
第四步:执行迭代语句 ④ ,针对循环变量重新赋值;
第五步:根据循环变量的新值,重新从第二步开始再执行一遍;
do…while…循环
基本格式
do{
循环体语句;
if(当满足一定条件时){
break;//终止当前的循环
}
}while(true);
扩展格式
初始化语句①;
do {
循环体语句②;
迭代语句③;
} while (循环条件语句④);
执行流程
第一步:执行初始化语句 ① ,完成循环变量的初始化;
第二步:执行循环体语句 ② ;
第三步:执行迭代语句 ③ ,针对循环变量重新赋值;
第四步:执行循环条件语句 ④ ,看循环条件语句的值是true ,还是 false ;如果是 true ,根据循环变量的新值,重新从第二步开始再执行一遍;如果是 false ,循环语句中止,循环不再执行
循环语句的区别
从循环次数角度分析
-
do…while 循环至少执行一次循环体语句。
-
for 和 while 循环先循环条件语句是否成立,然后决定是否执行循环体,至少执行零次循环体语句。
从循环变量的生命周期角度分析
-
for 循环的循环变量在 for() 中声明的,在循环语句结束后,不可以被访问。
-
while 和 do…while 循环的循环变量因为在外面声明的,所以 while 和 do…while 结束后可以被继续使用的。
如何选择
-
遍历有明显的循环次数(范围)的需求,选择 for 循环。
-
遍历没有明显的循环次数(范围)的需求,循环 while 循环。
-
如果循环体语句块至少执行一次,可以考虑使用 do…while循环。
-
本质上:三种循环之间是可以互相转换的,都能实现循环的功能
三种循环结构都具有四要素
-
① 循环变量的初始化表达式。
-
② 循环条件。
-
③ 循环变量的修改的迭代表达式。
-
④ 循环体语句块。
循环嵌套
格式
外层循环{
内层循环{
}
}
一般外层循环表示行,里面循环表示单元格:外层作为控制循环的次数,相当于表格的行,内层作为控制单层循环的次数,相当于表格的列
结论
外循环执行一次,内循环执行一圈
控制循环语句
break
表示终止当前的循环
使用场景
① 在选择结构 switch 语句中。
② 在循环语句中。
注意
离开使用场景,是没有意义的
continue
使用场景
用在循环中,表示跳过此次循环,继续下面的循环
注意
离开使用场景,是没有意义的
return
return 单独使用,表示结束方法的调用
-
reutrn :并非专门用于结束循环的,它的功能是结束一个方
法。当一个方法执行到一个 return 语句的时候,这个方法将被
结束。 -
和 break 和 continue 不同的是,return 直接结束整个方法,
不管这个 return 处于多少层循环之内。
return 值 表示返回值
System.exit(0)
System.exit(0): 正常退出,程序正常执行结束退出。无论如何,内存都释放了!也就是说连JVM都关闭了,内存里根本不可能还有什么东西。
system.exit(1): 非正常退出,就是说无论程序正在执行与否,都退出