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 (初始化; 条件; 更新) {
// 循环体
}
执行流程:
- 执行初始化(只执行一次)
- 判断条件,为true执行循环体
- 执行更新语句
- 重复步骤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