Java 四种循环类型 + 控制关键字
·
Java 一共有 4 类循环:普通for、while、do-while、增强for(for-each),附带循环控制关键字 break、continue。
一、普通 for 循环
1. 语法结构
for(①初始化表达式; ②布尔判断条件; ③更新表达式){
④循环体代码;
}
执行顺序:① → ②(成立)→④→③ → ②→④→③……直到②不成立结束
- ①:只执行1次,定义循环变量
- ②:每次循环前判断,true执行循环,false终止
- ③:循环体结束后执行,更新变量
2. 基础示例
// 输出 1~10
for(int i = 1; i <= 10; i++){
System.out.println(i);
}
3. 灵活写法(全部可省略)
- 省略初始化:变量定义在外面
int i = 1;
for(; i <= 5; i++){}
- 省略更新:循环体内手动自增
for(int i = 1; i <= 5;){
i++;
}
- 省略条件 → 死循环
for(;;){}
4. 适用场景
已知准确循环次数:计数、遍历固定长度数组、多层嵌套循环。
二、while 循环(先判断,后执行)
1. 语法
while(布尔条件){
循环体;
}
执行逻辑:先判断条件,条件为true才执行循环;条件false,一次都不运行。
2. 示例
int i = 1;
while(i <= 5){
System.out.println(i);
i++; // 必须更新变量,否则死循环
}
3. 死循环写法
while(true){}
4. 适用场景
循环次数不确定,依靠条件控制结束:文件读取、用户输入、动态数据遍历。
三、do-while 循环(先执行,后判断)
1. 语法
do {
循环体;
} while(布尔条件); // 末尾分号不能丢
核心特点:无论条件是否成立,循环体至少执行1次。
2. 示例
int i = 10;
do {
System.out.println("执行一次");
i++;
} while(i < 5);
// 输出:执行一次,先运行再判断
3. 适用场景
需要先操作、再校验的场景:密码校验、菜单交互,至少要展示一次界面。
四、增强 for 循环 for-each(专门遍历数组/集合)
1. 语法
for(元素类型 变量 : 数组/集合){
使用变量
}
2. 数组示例
int[] arr = {10,20,30};
for(int num : arr){
System.out.println(num);
}
3. 集合示例
ArrayList<String> list = new ArrayList<>();
list.add("Java");
for(String s : list){
System.out.println(s);
}
4. 优缺点
- 优点:代码极简,不用下标,不会下标越界
- 缺点:没有索引,无法获取当前元素下标、不能修改原数组/集合元素
5. 适用场景
只读取数据,不需要下标、不需要修改元素的遍历操作。
五、循环控制关键字 break / continue
1. break
作用:立刻终止当前所在循环,跳出循环块
for(int i=1;i<=5;i++){
if(i == 3){
break;
}
System.out.println(i); // 输出 1 2
}
2. continue
作用:终止本次循环,直接进入下一轮判断,不结束整个循环
for(int i=1;i<=5;i++){
if(i == 3){
continue;
}
System.out.println(i); // 输出1 2 4 5
}
3. 带标签break(多层循环跳出)
多层嵌套循环时,指定跳出外层循环
outer: // 外层标签
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
if(i==2 && j==2){
break outer; // 直接结束外层循环
}
}
}
六、四种循环对比总结
| 循环类型 | 执行特点 | 是否有索引 | 使用场景 |
|---|---|---|---|
| for | 先判断,次数可控 | 有 | 已知循环次数、多层循环 |
| while | 先判断,可能一次不执行 | 无,需自定义变量 | 次数未知,循环前判断 |
| do-while | 先执行,至少运行一次 | 无,需自定义变量 | 输入校验、菜单交互 |
| for-each | 仅遍历,无判断条件 | 无 | 单纯读取数组/集合 |
七、高频注意点
- while、do-while 内部必须更新循环变量,否则死循环;
- for-each 只能读取,不能拿到下标,不能修改原数组;
- do-while 结尾必须加分号,语法易错;
- break 结束整个循环,continue 只跳过当前一次。
更多推荐
所有评论(0)