0Pricing
Java Academy · 课时

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 为局部变量使用 var
  2. var 何时有助于可读性
  3. for 循环中的 var
  4. var 的限制
← 返回 Java Academy