Java 流程控制
Java 提供两种基本的流程控制结构:分支结构和循环结构。
一、顺序结构
顺序结构就是程序从上到下逐行执行。
二、分支结构
1. if
1 |
|
2. switch
1 |
|
- 先计算表达式的结果,然后根据结果执行相应的 case ,若结果没有对应语句,则执行 default: 之后的语句
- 表达式结果可以是:整数、String 、枚举
- case n: 仅起指示作用而不起分隔作用,若没有 break ,则会一直执行到 switch 结束
三、循环结构
1. while
1 |
|
当循环条件为 真 时,执行循环体,继续判断循环条件;当循环条件为 假 时,停止循环。
- 循环体应该能使循环条件发生改变,否则就会死循环。
- 条件为假时,一次都不执行。
2. do while
1 |
|
先执行一次循环体;判断循环条件,为 真 时执行循环体,继续判断循环条件;为 假 时停止循环。
- 循环体应该能使循环条件发生改变,否则就会死循环
- 至少执行一次代码块
3. for
(1) 语法
1 |
|
- 先执行初始语句,初始语句会且仅会被执行一次
- 判断循环条件,
- 当循环条件为 真 时,执行循环体,执行末尾循环体,继续判断循环条件
- 判断循环条件,当循环条件为 假 时,停止循环
(2) 初始语句
一般用于为条件变量赋初值
可省略
1
for ( ; i < n; i++)
可包含多个表达式,表达式之间用逗号隔开
1
for (i = 0, j = 0;i < n; i++)
可定义变量,在 for 中定义的变量将只在 for 中有效
1
for (int i = 0; i < n; i++)
(3) 循环条件
循环条件可省略,但不应死循环
例如:
1
2
3
for (i = 0; ; i++){
if(i > n) break;
}
(4) 末尾循环体
一般用于改变条件变量。
可省略,或移动至循环体末尾
1
2
3
4for (i = 0; i < n; ){
循环体;
i++;
}可包含多个表达式,表达式之间用逗号间隔
1
for (i = 0; i < n; i++, j++)
4. foreach
(1) 语法
1 |
|
每一轮循环中,数组的一个元素值复制给局部变量,由局部变量参与循环体中的运算。
例如:
1
2
3
for (int a : nums){
System.out.println(a);
}
(2) 声明语句
1 |
|
声明新的局部变量,该变量的类型应该与数组元素相同。
(3) 表达式
表达式应为数组,或返回值为数组的方法。
(4) 注意事项
每一轮循环中,数组元素值单向传递给局部变量,因此循环无法对数组做任何修改
但如果数组中放置的是引用类型变量,则可以通过元素的值(即数据的地址),修改对应的数据
每一轮循环中,单向传递的仅是元素值而没有下标值,因此无法查询到元素的具体下标
5. break
(1) 作用
用于跳出循环,即跳出整个循环,并继续执行循环之后的语句。
(2) 跳出本层循环
在循环体中恰当的位置放置 break 即可,程序运行到此时将会结束循环。
(3) 跳出外层循环
- 在 break 之前的循环语句中,用标签标记循环(通常为外层循环),其格式为
循环标签:
- 在 break 语句后紧跟循环标签,该语句将会停止标签所标识的循环
例如:
1
2
3
4
5
6
7
8
for (int i = 0; i < 10; i++){
循环标签:
for (int j = 0; j < 10; j++){
if (条件){
break 循环循环标签;
}
}
}
6. continue
(1) 作用
用于跳过本轮循环,(若是 for 循环,仍会执行末尾循环体),继续执行下一轮循环。
(2) 跳过本轮循环
在循环体中恰当的位置放置 continue 即可,程序运行到此时将会跳过本轮循环。
(3) 跳过外层本轮循环
- 在 continue 之前的循环语句中,用标签标记循环(通常为外层循环),其格式为
循环标签:
- 在 continue 语句后紧跟循环标签,该语句将会跳过标签所标识的循环的本轮循环
参考
疯狂 Java 讲义