for 循环中的 var
推断循环变量类型
for 循环中的 var 是 CoddyKit 上的免费 Java Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。
循环中的 var
var 可以自然地用作经典 for 循环和增强型 for-each 循环中的循环变量。编译器会根据循环上下文推断类型。
经典 for 循环计数器
在经典 for 循环中,var 会根据初始化表达式推断计数器类型。这里的 var i = 0 会推断为 int。
public class Main {
public static void main(String[] args) {
for (var i = 0; i < 5; i++) {
System.out.println("i = " + i);
}
}
}遍历列表的 for-each 循环
在增强型 for 循环中,var 会根据集合推断元素类型。这里的每个 name 都是一个 String。
import java.util.List;
public class Main {
public static void main(String[] args) {
var names = List.of("Ann", "Ben", "Cara");
for (var name : names) {
System.out.println(name);
}
}
}数组上的逐项遍历
数组也同样适用。元素类型会根据数组类型推断出来。
public class Main {
public static void main(String[] args) {
var scores = new int[]{90, 85, 78};
var total = 0;
for (var s : scores) {
total += s;
}
System.out.println("Total: " + total);
}
}遍历映射的条目
遍历映射条目时,var 可以免去您编写冗长的 Map.Entry 类型。
import java.util.Map;
public class Main {
public static void main(String[] args) {
var ages = Map.of("Ann", 30, "Ben", 25);
for (var entry : ages.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
}
}推断出的元素方法
由于元素类型已知,您可以在循环中调用它的方法,并获得完整的编译时检查。
import java.util.List;
public class Main {
public static void main(String[] args) {
var words = List.of("red", "green");
for (var w : words) {
System.out.println(w.toUpperCase() + " (" + w.length() + ")");
}
}
}嵌套循环
嵌套循环中也可以使用 var,让每个计数器声明都更加简短。
public class Main {
public static void main(String[] args) {
for (var i = 1; i <= 3; i++) {
for (var j = 1; j <= 3; j++) {
System.out.print(i * j + " ");
}
System.out.println();
}
}
}递减计数
推断出的类型遵循初始化表达式,因此递减循环的工作方式也是一样的。
public class Main {
public static void main(String[] args) {
for (var n = 5; n >= 1; n--) {
System.out.println(n);
}
System.out.println("Liftoff");
}
}var 与长整型计数器
如果需要使用 long 计数器,请在初始化表达式中使用 long 字面量,以便让 var 推断出更宽的类型。
public class Main {
public static void main(String[] args) {
var sum = 0L;
for (var i = 1L; i <= 1000000L; i++) {
sum += i;
}
System.out.println(sum);
}
}循环的可读性
循环是使用 var 的最佳场景之一,因为从集合或初始化表达式中可以明显看出类型。这样代码既简洁又安全。
import java.util.List;
public class Main {
public static void main(String[] args) {
var temps = List.of(20, 22, 19, 25);
var max = Integer.MIN_VALUE;
for (var t : temps) {
if (t > max) max = t;
}
System.out.println("Max: " + max);
}
}同时获取索引和值
您可以将经典的索引循环与 var 结合使用,同时读取列表中的位置和值。
import java.util.List;
public class Main {
public static void main(String[] args) {
var items = List.of("a", "b", "c");
for (var i = 0; i < items.size(); i++) {
System.out.println(i + ": " + items.get(i));
}
}
}快速检查
在 for (var name : names) 中,如果 names 是 List<String>,那么 name 的类型是什么?
回顾
您已经学习了循环中的 var:
- 经典循环:根据初始化表达式推断计数器类型
- 逐项循环:根据集合或数组推断元素类型
- 免去编写冗长的类型,例如
Map.Entry - 对于
long计数器,请使用 long 字面量(例如0L) - 循环是使用
var的理想场景
常见问题解答
「for 循环中的 var」课时是免费的吗?
是的 — 「for 循环中的 var」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。
「for 循环中的 var」这节课中我会学到什么?
推断循环变量类型 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Java Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「for 循环中的 var」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Java Academy 课中编写并运行代码吗?
能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 为局部变量使用 var
- var 何时有助于可读性
- for 循环中的 var
- var 的限制