Java Versions and Features - HowToDoInJava
JEP 286: Local-Variable Type Inference
Java 各版本和特性(Java Versions and Features)
JEP 286
Java 10 引入了一个闪亮的新功能:局部变量类型推断。对于局部变量,现在可以使用特殊的保留类型名称“var”代替实际类型
例
package org.example;
public class Var {
public static void main(String[] args) {
String str = "Hello, Java!";
var str1 = "Hello, Java!";
System.out.println(str1.getClass());
}
}
结论是:
java还是编译型语言,不是javascript,python解析型语言
编译器会把推断出来的类型写入字节码,不影响运行时
“var”实际上只是一个语法糖,并且它不会在编译的字节码中引入任何新的结构,在运行期间,JVM 也没有为它们提供任何特殊的指令。
鸡肋功能, var 有可能让代码变得更糟,不建议使用。