六、流程控制语句
6.1 判断语句
- if语句
if(关系表达式){
语句体;
}
执行流程:
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
- if…else语句
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程:
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2
- if…else if…else语句
if(判断条件1){
执行语句1;
}else if(判断条件2){
执行语句2;
}
……
}else if(判断条件n){
执行语句n;
}else{
执行语句n+1;
}
执行流程:
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n+1
- if语句与三元运算符的互换
public static void main(String[] args) {
int a = 20;
int b = 10;
//定义变量,保存a和b的最大值
int c;
if (a > b){
c = a;
}else {
c = b;
}
System.out.println("1.输出最大值为:"+c);
//用三元运算符代替if...else判断语句,结果相同
c = a > b ? a : b;
System.out.println("2.输出最大值为:"+c);
}
6.2 选择语句
-
选择语句–switch
switch(表达式){ case 常量值1: 语句体1; break; case 常量值2: 语句体2; break; ... default: 语句体n+1; break; }
执行流程:
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。 -
case的穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。public static void main(String[] args) { int a = 5; switch (a){ case 0: System.out.println("执行case0"); break; case 5: System.out.println("执行case5"); case 10: System.out.println("执行case10"); default: System.out.println("执行default"); } /*最后程序执行结果是 执行case5 执行case10 执行default */ }
小贴士:
上述程序中,执行case5后,由于没有break语句,程序会一直向后走,不会在判断case,也不会理会break,直接运行完整体switch。由于case存在穿透性,因此初学者在编写switch语句时,必须要写上break。switch语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),JDK7版本后可以接收字符串。
6.3 循环语句
- for循环
for(初始化表达式①; 布尔表达式②; 步进表达式④){
循环体③
}
执行流程:
执行顺序:①②③④>②③④>②③④…当②不满足时才会停止循环,执行其他语句。
①负责完成循环变量初始化
②负责判断是否满足循环条件,不满足则跳出循环
③具体执行的语句
④循环后,循环条件所涉及变量的变化情况
-
while循环
初始化表达式① while(布尔表达式②){ 循环体③ 步进表达式④ }
执行流程:
执行顺序:①②③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句。
④循环后,循环变量的变化情况。 -
do…while循环
初始化表达式① do{ 循环体③ 步进表达式④ }while(布尔表达式②);
执行流程:
执行顺序:①③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句
④循环后,循环变量的变化情况
public static void main(String[] args) {
//使用循环输出10次HelloWorld
//1.for循环
for (int i = 0;i < 10;i++){
System.out.println("HelloWorld"+i);
}
//2.while循环
int j = 1;
while (j <= 10){
System.out.println("HelloWorld"+j);
//步进表达式
j++;
}
//3.do...while循环
int x = 1;
do {
System.out.println("HelloWorld"+x);
x++;
}while (x <= 10)
}
-
嵌套循环
所谓嵌套循环,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数
for(初始化表达式①;循环条件②;步进表达式⑦){ for(初始化表达式③;循环条件④;步进表达式⑥){ 执行语句⑤; } }
执行流程:
执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥
外循环一次,内循环多次。
比如跳绳:一共跳5组,每组跳10个。5组就是外循环,10个就是内循环。public static void main(String[] args) { //使用嵌套循环,打印5*8的矩形 //5*8的矩形,打印5行*号,每行8个(5行8列) //外循环5次,内循环8次 for (int i = 0;i < 5;i++){ for (int j = 0;j < 8;j++){ System.out.print("*"); } //内循环打印8个*后,需要一次换行 System.out.println(); } }
-
死循环
死循环:也就是循环中的条件永远为true,死循环的是永不结束的循环。例如:while(true){}。
-
跳出语句
-
break
使用场景:终止switch或者循环
-
continue
使用场景:结束本次循环,继续下一次的循环
public static void main(String[] args) {
for (int i = 1;i <= 10;i++){
if (i == 3){
/*
break;
输出 HelloWorld1 HelloWorld2
*/
/*
continue;
输出 除了HelloWorld3其他全都输出
*/
}
System.out.println("HelloWorld"+i);
}
}
[^for 和 while 的小区别:]: 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继 续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消 失,能够提高内存的使用效率。 在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/189534.html