Java for 循环详解:从基础语法到实战案例(新手友好版)

本文适合 Java 零基础小白,从语法结构到经典案例一步步拆解 for 循环,帮你彻底掌握这一核心循环结构。


一、为什么要用 for 循环?

在 Java 中,whiledo...while 已经能实现所有循环逻辑,但 for 循环 是更优雅、更高效的迭代工具,专门为「已知循环次数」的场景设计:

  • ✅ 代码结构更紧凑:把「初始化、条件判断、变量更新」三步集中在一行,一眼看懂循环逻辑
  • ✅ 可读性更强:循环次数在执行前就确定,避免了 while 循环中容易出现的变量遗漏问题
  • ✅ 最通用灵活:Java 中最常用的循环结构,适配数组遍历、数值计算、表格打印等几乎所有迭代场景

一句话总结:次数确定的循环,优先用 for 循环;次数不确定的循环,再考虑 while/do...while


二、for 循环核心语法与执行流程

1. 基础语法格式

java 复制代码
for (初始化表达式; 布尔表达式; 更新表达式) {
    // 循环体:需要重复执行的代码
}

2. 执行流程(按顺序)

  1. 初始化 :只在循环开始前执行 1 次 ,用于定义循环变量并赋初值(比如 int i = 0
  2. 条件判断 :计算布尔表达式,结果为 true → 进入循环体;结果为 false → 直接结束循环
  3. 执行循环体 :运行 {} 中的业务代码
  4. 更新表达式 :对循环变量进行递增/递减(比如 i++i--
  5. 回到步骤 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 循环常见易错点

  1. 循环变量作用域问题 :在 for() 中定义的变量(比如 int i),只在循环内部有效,循环结束后无法访问
  2. 死循环风险for(;;) 是合法的死循环(等价于 while(true)),务必避免无意义的死循环,会占用大量 CPU 资源
  3. 嵌套循环性能:内层循环次数 = 外层次数 × 内层次数,嵌套过深会导致性能急剧下降,尽量优化循环逻辑
  4. 更新表达式遗漏 :忘记写 i++ 会导致死循环,这是新手最容易犯的错误之一

七、总结

  • for 循环 是 Java 中最核心、最常用的循环结构,尤其适合「循环次数已知」的迭代场景
  • 语法简洁清晰,把「初始化、条件判断、变量更新」三步集中管理,大幅提升代码可读性
  • 从基础遍历到嵌套循环、增强 for 循环,能高效解决数组遍历、数值计算、九九乘法表等复杂业务场景
  • 新手学习时,建议先从简单案例入手,再逐步过渡到嵌套循环和增强 for 循环,循序渐进掌握核心逻辑
相关推荐
断手当码农1 小时前
Java算法题常见的20种输入模板(ACM / LeetCode 通用)
java
hashiqimiya2 小时前
spring报错
java·后端·spring
yaoxin5211232 小时前
352. Java IO API - Java 文件操作:java.io.File 与 java.nio.file 功能对比 - 4
java·python·nio
y = xⁿ2 小时前
【LeetCodehot100】T24:两两交换链表中的节点 T25:K个一组翻转链表
java·网络·数据结构·算法·链表
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 基于Springboot的养老服务管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
mjhcsp2 小时前
C++随机调整(Random Adjustment):优化算法的核心随机策略
java·c++·算法
qingwufeiyang_5302 小时前
Nacos学习笔记
java·笔记·学习·spring cloud·服务发现
天涯明月19932 小时前
服务网格完全指南:从基础概念到生产实践
java·服务器·数据库·分布式·微服务
Han.miracle2 小时前
万字详解 Lombok 构造方法注解:@AllArgsConstructor 非空校验实现与最佳实践
java·前端·数据库