Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误与异常

Java 多线程

Java 同步

Java 网络编程

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级Java

Java 杂项

Java APIs & Frameworks

Java 类引用

Java 有用资源

Java 10 - 局部变量类型推断


JEP 286 - 局部变量类型推断

局部变量类型推断是Java 10及以后版本中对语言最显著的更改之一。它允许使用`var`定义变量,无需指定其类型。编译器使用提供的变量值来推断变量的类型。这种类型推断仅限于局部变量。

声明局部变量的旧方法。

String name = "Welcome to tutorialspoint.com";

声明局部变量的新方法。

var name = "Welcome to tutorialspoint.com";

现在编译器通过检查提供的变量值,将`name`变量的类型推断为`String`。

值得注意的点

  • 成员变量、方法参数和返回值中没有类型推断。

  • 局部变量应在声明时进行初始化,否则编译器将无法推断类型并会抛出错误。

  • 局部变量推断在循环语句的初始化块内可用。

  • 没有运行时开销。由于编译器根据提供的变量值推断类型,因此不会造成性能损失。

  • 类型不会动态更改。一旦推断出局部变量的类型,就不能再更改。

  • 可以使用局部变量类型推断来减少复杂的样板代码。

Map<Integer, String> mapNames = new HashMap<>();

var mapNames1 = new HashMap<Integer, String>();

示例

以下程序演示了在JAVA 10中使用局部变量类型推断。

import java.util.List;

public class Tester {
   public static void main(String[] args) {
      var names = List.of("Julie", "Robert", "Chris", "Joseph"); 
      for (var name : names) {
         System.out.println(name);
      }
      System.out.println("");
      for (var i = 0; i < names.size(); i++) {
         System.out.println(names.get(i));
      }
   }
}

输出

它将打印以下输出。

Julie
Robert
Chris
Joseph

Julie
Robert
Chris
Joseph
广告