当我们使用的变量过多,代码的可读性会受到一定影响。而且,有时候开发人员会尽力避免声明中间变量,因为太多的类型声明只会分散注意力。所以我们在 JDK 10 中引入了 var(var 不是关键字,只是一个类型名。var 除了不能作为类名,其它都可以)
目录
局部变量类型推断的工作原理
在处理 var 时,编译器先是查看表达式右边部分,并根据右边变量值的类型进行推断,作为左边变量的类型,然后将该类型写入字节码当中
局部变量类型推断的注意事项
1. 局部变量不赋值,就不能实现类型推断
2. lambda 表达式中,左边的函数式接口不能声明为 var
3. 方法引用中,左边的函数式接口不能声明为 var
4. 数组的静态初始化中,需要有一边声明数据类型
5. var 并不会改变 Java 是一门静态语言的事实
局部变量类型推断的使用
import org.junit.Test;
import java.util.ArrayList;
public class varTest {
@Test
public void test(){
//1. 声明变量时,根据所附的值,推断变量的类型
var num = 10;
var list = new ArrayList<Integer>();
list.add(12);
//2. 遍历操作
for (var i : list){
System.out.println(i);
System.out.println(i.getClass());
}
}
}
>>> 12
class java.lang.Integer