Java循环语句 #

一、循环语句概述 #

循环语句用于重复执行某段代码,直到满足终止条件。

Java提供三种循环语句:

  • while
  • do-while
  • for

二、while循环 #

2.1 基本语法 #

java
while (条件表达式) {
    // 循环体
}

执行流程:先判断条件,条件为true执行循环体,然后再次判断条件,直到条件为false退出循环。

2.2 使用示例 #

java
int i = 1;
while (i <= 5) {
    System.out.println("第" + i + "次循环");
    i++;
}

// 输出:
// 第1次循环
// 第2次循环
// 第3次循环
// 第4次循环
// 第5次循环

2.3 计数器模式 #

java
int count = 0;
int sum = 0;

while (count < 100) {
    sum += count;
    count++;
}
System.out.println("1到99的和: " + sum);

2.4 条件控制模式 #

java
Scanner scanner = new Scanner(System.in);
String input;

while (true) {
    System.out.print("请输入(exit退出): ");
    input = scanner.nextLine();
    
    if ("exit".equals(input)) {
        break;
    }
    
    System.out.println("你输入了: " + input);
}

scanner.close();

2.5 遍历集合 #

java
List<String> list = Arrays.asList("A", "B", "C");
int index = 0;

while (index < list.size()) {
    System.out.println(list.get(index));
    index++;
}

三、do-while循环 #

3.1 基本语法 #

java
do {
    // 循环体
} while (条件表达式);

执行流程:先执行一次循环体,然后判断条件,条件为true继续执行,直到条件为false退出。

3.2 使用示例 #

java
int i = 1;
do {
    System.out.println("第" + i + "次循环");
    i++;
} while (i <= 5);

3.3 与while的区别 #

java
int i = 10;

// while:条件不满足,不执行
while (i < 5) {
    System.out.println("while执行了");  // 不输出
}

// do-while:至少执行一次
do {
    System.out.println("do-while执行了");  // 输出一次
} while (i < 5);

3.4 输入验证 #

java
Scanner scanner = new Scanner(System.in);
int number;

do {
    System.out.print("请输入1-100的数字: ");
    number = scanner.nextInt();
} while (number < 1 || number > 100);

System.out.println("你输入了: " + number);
scanner.close();

四、for循环 #

4.1 基本语法 #

java
for (初始化; 条件; 更新) {
    // 循环体
}

执行流程:

  1. 执行初始化(只执行一次)
  2. 判断条件,为true执行循环体
  3. 执行更新语句
  4. 重复步骤2-3,直到条件为false

4.2 使用示例 #

java
for (int i = 1; i <= 5; i++) {
    System.out.println("i = " + i);
}

// 输出:
// i = 1
// i = 2
// i = 3
// i = 4
// i = 5

4.3 各部分说明 #

java
for (int i = 0; i < 10; i++) {
    // i = 0:初始化,声明并初始化循环变量
    // i < 10:条件,决定是否继续循环
    // i++:更新,每次循环后执行
}

4.4 省略部分 #

java
// 省略初始化
int i = 0;
for (; i < 5; i++) {
    System.out.println(i);
}

// 省略条件(无限循环)
for (int j = 0; ; j++) {
    if (j >= 5) break;
    System.out.println(j);
}

// 省略更新
for (int k = 0; k < 5; ) {
    System.out.println(k);
    k++;
}

// 全部省略(无限循环)
for (;;) {
    // 需要break退出
}

4.5 多变量 #

java
for (int i = 0, j = 10; i < j; i++, j--) {
    System.out.println("i=" + i + ", j=" + j);
}

4.6 遍历数组 #

java
int[] arr = {10, 20, 30, 40, 50};

for (int i = 0; i < arr.length; i++) {
    System.out.println("arr[" + i + "] = " + arr[i]);
}

五、增强for循环(for-each) #

5.1 基本语法 #

java
for (元素类型 变量 : 数组或集合) {
    // 使用变量
}

5.2 遍历数组 #

java
int[] arr = {10, 20, 30, 40, 50};

for (int num : arr) {
    System.out.println(num);
}

5.3 遍历集合 #

java
List<String> list = Arrays.asList("A", "B", "C");

for (String item : list) {
    System.out.println(item);
}

5.4 与传统for循环对比 #

java
String[] names = {"张三", "李四", "王五"};

// 传统for循环:可以获取索引
for (int i = 0; i < names.length; i++) {
    System.out.println(i + ": " + names[i]);
}

// 增强for循环:更简洁,但无法获取索引
for (String name : names) {
    System.out.println(name);
}

5.5 注意事项 #

java
int[] arr = {1, 2, 3};

// 错误:不能修改数组元素
for (int num : arr) {
    num = 0;  // 只修改了临时变量,不影响原数组
}

// 正确:使用传统for循环
for (int i = 0; i < arr.length; i++) {
    arr[i] = 0;
}

六、嵌套循环 #

6.1 基本用法 #

java
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        System.out.print("(" + i + "," + j + ") ");
    }
    System.out.println();
}

// 输出:
// (1,1) (1,2) (1,3)
// (2,1) (2,2) (2,3)
// (3,1) (3,2) (3,3)

6.2 打印矩形 #

java
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 10; j++) {
        System.out.print("*");
    }
    System.out.println();
}

// 输出5行10列的星号矩形

6.3 打印三角形 #

java
for (int i = 1; i <= 5; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print("*");
    }
    System.out.println();
}

// 输出:
// *
// **
// ***
// ****
// *****

6.4 打印九九乘法表 #

java
for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.printf("%d×%d=%-2d ", j, i, i * j);
    }
    System.out.println();
}

七、循环选择建议 #

循环类型 使用场景
while 不确定循环次数,先判断后执行
do-while 至少执行一次,如输入验证
for 确定循环次数,如遍历数组
for-each 遍历数组或集合,不需要索引

八、常见问题 #

8.1 死循环 #

java
// 死循环示例
while (true) {
    // 需要break退出
}

for (;;) {
    // 需要break退出
}

// 错误:条件永远为true
int i = 0;
while (i < 10) {
    System.out.println(i);
    // 忘记i++
}

8.2 循环变量作用域 #

java
// for循环变量作用域在循环内
for (int i = 0; i < 5; i++) {
    System.out.println(i);
}
// System.out.println(i);  // 错误:i不可访问

// while循环变量在循环外声明
int j = 0;
while (j < 5) {
    System.out.println(j);
    j++;
}
System.out.println("j = " + j);  // 正确:j = 5

8.3 浮点数循环 #

java
// 不推荐:浮点数精度问题
for (double d = 0.0; d != 1.0; d += 0.1) {
    System.out.println(d);
    // 可能无限循环
}

// 推荐:使用整数
for (int i = 0; i <= 10; i++) {
    double d = i * 0.1;
    System.out.println(d);
}

九、总结 #

循环 特点 使用场景
while 先判断后执行 不确定次数
do-while 先执行后判断 至少执行一次
for 结构清晰 确定次数
for-each 简洁 遍历集合/数组

循环语句要点:

  • 确保循环能正常退出
  • 选择合适的循环类型
  • 注意循环变量作用域
  • 避免在循环中修改集合
最后更新:2026-03-26