本文适合 Java 零基础小白,从语法结构到经典案例一步步拆解 for 循环,帮你彻底掌握这一核心循环结构。
一、为什么要用 for 循环?
在 Java 中,while 和 do...while 已经能实现所有循环逻辑,但 for 循环 是更优雅、更高效的迭代工具,专门为「已知循环次数」的场景设计:
- ✅ 代码结构更紧凑:把「初始化、条件判断、变量更新」三步集中在一行,一眼看懂循环逻辑
- ✅ 可读性更强:循环次数在执行前就确定,避免了
while循环中容易出现的变量遗漏问题 - ✅ 最通用灵活:Java 中最常用的循环结构,适配数组遍历、数值计算、表格打印等几乎所有迭代场景
一句话总结:次数确定的循环,优先用 for 循环;次数不确定的循环,再考虑 while/do...while。
二、for 循环核心语法与执行流程
1. 基础语法格式
java
for (初始化表达式; 布尔表达式; 更新表达式) {
// 循环体:需要重复执行的代码
}
2. 执行流程(按顺序)
- 初始化 :只在循环开始前执行 1 次 ,用于定义循环变量并赋初值(比如
int i = 0) - 条件判断 :计算布尔表达式,结果为
true→ 进入循环体;结果为false→ 直接结束循环 - 执行循环体 :运行
{}中的业务代码 - 更新表达式 :对循环变量进行递增/递减(比如
i++或i--) - 回到步骤 2 :重复「判断 → 执行 → 更新」,直到布尔表达式为
false
3. 极简示例:打印 1~10
java
public class ForLoopBasic {
public static void main(String[] args) {
// 初始化 i=1;条件:i<=10;每次循环后 i 自增 1
for (int i = 1; i <= 10; i++) {
System.out.println("当前数字:" + i);
}
}
}
运行结果:
js
当前数字:1
当前数字:2
...
当前数字:10
三、经典实战练习(附完整代码)
练习 1:计算 0~100 之间奇数和与偶数和
java
public class ForLoopSum {
public static void main(String[] args) {
int evenSum = 0; // 存储偶数和
int oddSum = 0; // 存储奇数和
// 遍历 0~100 所有数字
for (int i = 0; i <= 100; i++) {
if (i % 2 == 0) {
evenSum += i; // 偶数累加
} else {
oddSum += i; // 奇数累加
}
}
System.out.println("0~100 偶数和:" + evenSum);
System.out.println("0~100 奇数和:" + oddSum);
}
}
运行结果:
0~100 偶数和:2550
0~100 奇数和:2500
练习 2:输出 1~1000 能被 5 整除的数(每行 3 个)
java
public class ForLoopDiv5 {
public static void main(String[] args) {
int count = 0; // 计数器,控制换行
for (int i = 1; i <= 1000; i++) {
if (i % 5 == 0) {
System.out.print(i + "\t"); // 用制表符对齐输出
count++;
// 每输出 3 个数字就换行
if (count % 3 == 0) {
System.out.println();
}
}
}
}
}
运行结果片段:
5 10 15
20 25 30
35 40 45
...
练习 3:打印九九乘法表(嵌套 for 循环经典案例)
java
public class ForLoop99 {
public static void main(String[] args) {
// 外层循环:控制行数(1~9 行)
for (int i = 1; i <= 9; i++) {
// 内层循环:控制每行的列数(1~i 列)
for (int j = 1; j <= i; j++) {
System.out.print(j + "×" + i + "=" + (i * j) + "\t");
}
System.out.println(); // 每行结束后换行
}
}
}
运行结果:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
1×4=4 2×4=8 3×4=12 4×4=16
...
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
四、进阶:增强 for 循环(for-each)
Java 5 之后推出了 增强 for 循环(for-each),专门用于遍历数组或集合,无需手动管理索引,代码更简洁。
1. 语法格式
java
for (元素类型 变量名 : 数组/集合对象) {
// 使用变量访问当前元素
}
2. 示例:遍历整型数组
java
public class ForEachDemo {
public static void main(String[] args) {
int[] nums = {10, 20, 30, 40, 50};
// 遍历数组,自动获取每个元素
for (int num : nums) {
System.out.println("数组元素:" + num);
}
}
}
运行结果:
js
数组元素:10
数组元素:20
数组元素:30
数组元素:40
数组元素:50
⚠️ 注意:增强 for 循环无法修改数组元素的值 ,也不能获取当前索引,仅适合「只读遍历」场景。
五、for 循环 vs while 循环:该怎么选?
| 特性 | for 循环 | while 循环 |
|---|---|---|
| 适用场景 | 已知循环次数(比如遍历 0~100、打印 10 行) | 未知循环次数(比如用户输入直到输入 quit 为止) |
| 结构紧凑度 | 高,初始化/条件/更新在一行 | 相对分散,需手动管理变量 |
| 可读性 | 更好,一眼看出循环逻辑 | 适合复杂条件判断 |
| 典型用途 | 数组遍历、数值计算、表格打印 | 读取输入、无限循环、动态条件判断 |
六、避坑指南:for 循环常见易错点
- 循环变量作用域问题 :在
for()中定义的变量(比如int i),只在循环内部有效,循环结束后无法访问 - 死循环风险 :
for(;;)是合法的死循环(等价于while(true)),务必避免无意义的死循环,会占用大量 CPU 资源 - 嵌套循环性能:内层循环次数 = 外层次数 × 内层次数,嵌套过深会导致性能急剧下降,尽量优化循环逻辑
- 更新表达式遗漏 :忘记写
i++会导致死循环,这是新手最容易犯的错误之一
七、总结
- for 循环 是 Java 中最核心、最常用的循环结构,尤其适合「循环次数已知」的迭代场景
- 语法简洁清晰,把「初始化、条件判断、变量更新」三步集中管理,大幅提升代码可读性
- 从基础遍历到嵌套循环、增强 for 循环,能高效解决数组遍历、数值计算、九九乘法表等复杂业务场景
- 新手学习时,建议先从简单案例入手,再逐步过渡到嵌套循环和增强 for 循环,循序渐进掌握核心逻辑