控制语句
控制语句分为三类:顺序语句,选择语句和循环语句。
1. if条件判断结构
1.1if单分支结构
语法结构:
- if中的“条件表达式”返回的数据类型必须是boolean类型。
- 当“条件表达式”返回的结果为true时,才会执行if{}中执行的代码
- “选择执行”也包含在“顺序执行”中的。
1.2 if双分支结构
语法
- if中的“条件表达式”返回的数据类型必须是boolean类型。
- 当“条件表达式”为true时,执行if{}中的代码;当“条件表达式”为false时,执行else{}中的代码。
- if双选结构,有且只能执行一个{}中的代码。
1.3 if多分支结构
语法
- if中的“条件表达式”返回的数据类型必须是boolean类型。
- 如果if中某一个“条件表达式”成立,则执行该if{}中的代码,该if{}中的代码执行完毕后执行if多选结构之后的代码
- 如果if中所有的“条件表达式”都不成立,则执行else{}中的代码。
- 一个完整的多选结构,有且只能执行一个{}中的代码。
- if, 不能省略,有且只能有一个;else if, 可以省略,可以有任意多个。else, 可以省略,最多只能有一个。
1.4总结
- 如果if选择结构只需执行一条语句时,那么可以省略{};如果需要执行多条语句,那么就是不能省略{}。为了提高代码的易读性,建议不要省略{}。
- {}中的代码语句也称为代码块,在代码块定义的常量或变量的作用域仅限于代码块中,在代码块之外不能被使用。
- 能用if多选择结构就不要用if单选择结构,因为if多选择结构的效率要高于if单选择结构。
- 在if选择结构中还可以嵌套别的选择结构或循环结构。
2. switch多分支结构
语法
- switch中的“表达式”必须是:byte、short、int、 char、String(JDK7)、枚举(后面学习)。
- case后面接的必须是常量,不允许是变量。case后面的常量的数据类型必须和“表达式”的数据类型保持一致switch中的case后面不能是条件判断|区间判断,因为“表达式”不支持boolean类型。在同一个switch结构中,case后面不允许有相同的常量值。
- 执行break语句,作用就是用于跳出switch语句。
- 当switch选择结构中所有的case都不匹配的时候,才会执行default中的语句。(switch中的case和default不区分先后顺序。)
总结:当条件表达式是等值判断的情况,可以使用 if-else if-else 多分支结构或者 switch 结构,如果条件表达式是区间判断的情况,则只能使用 if-elseif-else 多分支结构。
3. for循环结构
语法结构:
for(循环初始化表达式; 循环条件表达式; 循环后的操作表达式) {
// 循环体
}
for循环执行顺序总结:
- "循环初始化表达式”最先执行,并且只执行了一次。
- 如果“循环条件表达式”成立,则执行循环体;如果“循环条件表达式”不成立,则跳出循环。
- “循环体”执行完毕以后,立刻执行“循环后的操作表达式”
- “循环后的操作表达式”执行完毕以后,立刻执行“循环条件表达式”
注意:
- 在“循环初始化表达式”中声明的“循环变量”属于局部变量,只能在当前循环中使用。
- 最后一趟循环执行完毕以后,会立刻执行“循环后的操作表达式”,然后再执行“循环条件表达式”。
- 如果想要在循环体中操作同一个变量,那么应该把该变量声明放在循环之外(前面),这样在循环体中使用的就是同一个变量了
- 循环条件表达式”返回的结果必须是boolean类型,如果省略“循环条件表达式”那么默认值为true。
4.while循环
语法:
while(循环条件表达式) {
// 循环体
}
当“循环条件表达式”为true时,即执行循环体。
注意:
- 当while循环体执行完毕,会直接跳转去执行判断“循环条件表达式”是否成立,如果成立则执行“循环体”,否则跳出循环 。
- 在while循环中,“循环后的操作表达式”放的位置不同,难么最终输出的结果也会不一样!
4.1 while与for的区别
for循环能做的事情while循环都可以实现,使用循环的时候for和while都可以选择。
建议以下条件使用while循环:
- 循环结束后循环变量还需要参与运算,那么建议使用while循。
- 不确定循环次数的时候,建议使用while循环。
5. do...while循环
语法:
do {
// 循环体
} while(循环条件表达式);
对比while循环,do...while循环时“先执行,后判断”。
死循环:循环一直执行,永远无法停止。for(;;){} while(true){}
6. break、continue、return
6.1 break关键字
适用场合:switch、循环(for、while、do...while)
break的作用:
在switch中使用,跳出switch语句,执行switch语句之后的代码。
在循环中使用,用于跳出当前循环,后续循环不再执行。执行循环外的代码。
6.2 continue关键字
使用场合:只能在循环中使用(for循环、while循环、do...while循环)
continue的作用:
跳出本趟循环,继续执行后续循环。
6.3 return关键字
return的作用:1、结束当前方法。2、返回一个值
break与return的不同点:break跳出循环,执行循环外的代码。return跳出方法,不执行后续代码。
注意:在break、continue和return关键字后面不要书写任何代码,因为书写的代码无法执行。
6.4 带标签的break,continue
步骤:
第一步:给外侧循环取一个名字, Outer:for(int i = 1; i < 10; i++) {}
第二步:在需要跳出循环的位置,书写代码为:break Outer;
Outer:
建议:带标签的break,continue在开发中一般不去使用。
7. 嵌套循环
嵌套循环:在一个循环语句内部再嵌套一循环或多个循环
//外侧循环,控制行数,
for(int i = 1;i <= 9;i++){
//内侧循环,控制列数(每一行有多少列)
//内侧循环里i执行一次,j做一个循环。
for(int j = 1;j <= i;j++){
System.out.print(j + "*" + i + "=" + j*i + "t");
}
System.out.println();
}
- while、do-while与for循环可以任意嵌套多层。
- 多重循环执行过程:外层循环变量变化一次,内层循环变量要变化一遍 。