Java 循环结构 - for, while 及 do...while

在 Java 编程中,循环结构用于重复执行一段代码,直到满足特定条件。Java 提供了三种主要的循环结构:for循环、while循环和do...while循环。本文将详细介绍这三种循环的语法、用法和区别,并通过示例代码进行说明。

一、for 循环

for循环是最常用的循环结构,适用于已知循环次数的场景。

1. 基本语法

for (初始化表达式; 布尔表达式; 更新表达式) {
    // 循环体
}
 
  • 初始化表达式:在循环开始前执行,通常用于定义循环变量。
  • 布尔表达式:每次循环前检查,若为true则执行循环体,否则退出。
  • 更新表达式:每次循环体执行后更新循环变量。

2. 执行流程

  1. 执行初始化表达式。
  2. 检查布尔表达式,若为true则执行循环体,否则退出。
  3. 执行更新表达式。
  4. 重复步骤 2 和 3。

3. 示例代码

 
// 输出1到5的整数
for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}
 

4. 增强 for 循环(foreach)

用于遍历数组或集合:
 
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
    System.out.println(num);
}
 

二、while 循环

while循环适用于未知循环次数,仅根据条件判断是否继续的场景。

1. 基本语法

while (布尔表达式) {
    // 循环体
}
 
  • 布尔表达式:每次循环前检查,若为true则执行循环体,否则退出。

2. 执行流程

  1. 检查布尔表达式,若为true则执行循环体,否则退出。
  2. 循环体执行后,再次检查布尔表达式,重复步骤 1。

3. 示例代码

// 输出1到5的整数
int i = 1;
while (i <= 5) {
    System.out.println(i);
    i++;
}
 

4. 注意事项

  • 确保循环条件最终会变为false,否则会导致无限循环。
  • 若初始条件不满足,循环体可能一次都不执行。

三、do...while 循环

do...while循环与while类似,但至少会执行一次循环体。

1. 基本语法

 
do {
    // 循环体
} while (布尔表达式);
 

  • 布尔表达式:每次循环体执行后检查,若为true则继续循环,否则退出。

2. 执行流程

  1. 执行循环体。
  2. 检查布尔表达式,若为true则继续循环,否则退出。
  3. 重复步骤 1 和 2。

3. 示例代码

// 输出1到5的整数
int i = 1;
do {
    System.out.println(i);
    i++;
} while (i <= 5);
 

4. 注意事项

  • 无论初始条件如何,循环体至少会执行一次。
  • 循环条件后的分号;不可省略。

四、三种循环的对比

循环类型适用场景执行次数特点
for 已知循环次数 0 次或多次 结构紧凑,循环变量作用域明确
while 未知循环次数,条件前置 0 次或多次 先判断条件,再执行循环体
do...while 未知循环次数,至少执行一次 至少 1 次 先执行循环体,再判断条件

五、循环控制语句

1. break 语句

用于立即终止整个循环:

for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        break;  // 当i等于5时,终止整个循环
    }
    System.out.println(i);
}
// 输出:1 2 3 4
 

2. continue 语句

用于跳过当前循环的剩余部分,直接进入下一次循环:
for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
        continue;  // 当i为偶数时,跳过后续代码,进入下一次循环
    }
    System.out.println(i);
}
// 输出:1 3 5 7 9
 

3. 标签(Label)

用于控制嵌套循环:

outer:
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        if (i == 2 && j == 2) {
            break outer;  // 跳出外层循环
        }
        System.out.println("i=" + i + ", j=" + j);
    }
}
 

六、常见应用场景

1. 遍历数组

int[] numbers = {10, 20, 30, 40};
for (int i = 0; i < numbers.length; i++) {
    System.out.println(numbers[i]);
}
 

2. 累加求和

 
int sum = 0;
for (int i = 1; i <= 100; i++) {
    sum += i;
}
System.out.println("Sum: " + sum);  // 输出: 5050
 

3. 读取用户输入

 
import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
int num;
do {
    System.out.print("Enter a number (0 to exit): ");
    num = scanner.nextInt();
    System.out.println("You entered: " + num);
} while (num != 0);
 

七、注意事项

  1. 避免无限循环:确保循环条件最终会变为false
  2. 循环变量作用域for循环的初始化变量仅在循环内可见。
  3. 性能考虑:在大规模数据处理时,for循环通常比while更高效。
  4. 代码可读性:选择合适的循环结构,避免过度复杂的嵌套。

八、总结

  • for 循环:适用于已知循环次数的场景,结构清晰。
  • while 循环:适用于条件判断的场景,灵活性高。
  • do...while 循环:适用于至少需要执行一次的场景。
  • 控制语句breakcontinue用于精确控制循环流程。

合理选择循环结构并结合控制语句,可以编写出高效、清晰的 Java 代码。

posted on 2025-06-20 11:02  coding博客  阅读(149)  评论(0)    收藏  举报