for 结构
for 循环是将循环三要素集中写在 () 中的一种结构,语法紧凑、可读性高。
语法格式
for (表达式1; 表达式2; 表达式3) {
语句块;
}
| 表达式 | 对应循环要素 | 说明 |
|---|---|---|
| 表达式1 | 循环变量初始化 | 循环开始前执行一次 |
| 表达式2 | 循环条件判断 | 每次循环前判断,为 true 则执行 |
| 表达式3 | 循环变量改变 | 每次循环体执行完后执行 |
执行流程
- 执行表达式1(变量初始化,仅一次)
- 计算表达式2(条件判断)
- 若为
true,执行循环体 - 执行表达式3(变量改变)
- 回到步骤2,如此循环
- 若表达式2为
false,退出循环
while 与 for 的等价对比
// while 写法
int i = 0;
while (i < 10) {
System.out.println("foxdevelop");
i++;
}
// for 写法
for (int j = 0; j < 10; j++) {
System.out.println("foxdevelop");
}Code language: JavaScript (javascript)
练习1:输出 1 到 10
for (int i = 0; i < 10; i++) {
System.out.println(i + 1);
}
练习2:求 1 到 100 的累加和
int total = 0;
for (int i = 0; i < 100; i++) {
total += i + 1;
}
System.out.println(total); // 输出 5050Code language: HTML, XML (xml)
表达式1和表达式3的多样化
表达式1和表达式3可以使用逗号隔开,进行多个变量的初始化或改变:
for (int i = 0, j = 10; i < 10; i++, j--) {
System.out.println(i + " " + j);
}Code language: JavaScript (javascript)
输出:
0 10
1 9
2 8
3 7
4 6
5 5
6 4
7 3
8 2
9 1
死循环
for 循环的三个表达式都可以省略,省略条件判断表达式即为死循环:
for (;;) {
// 死循环,等同于 while(true)
}Code language: JavaScript (javascript)
变量作用域
for 循环中在表达式1声明的变量,作用域仅限于 for 循环内部:
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
// System.out.println(i); // 错误,i 超出作用域Code language: JavaScript (javascript)
如果需要在循环外使用循环变量,应在循环外声明:
int i;
for (i = 0; i < 10; i++) {
System.out.println(i);
}
System.out.println(i); // 正确,输出 10Code language: JavaScript (javascript)
总结
| 特点 | 说明 |
|---|---|
| 三要素集中 | 初始化、条件、改变写在一行,结构清晰 |
| 变量作用域 | 循环内声明的变量仅在循环内有效 |
| 表达式可省略 | 三个表达式均可省略,灵活但需谨慎 |
| 适用场景 | 已知循环次数的场景 |
Previous: do-while 结构
Next: 循环中使用 break 中断循环