前言
var是JDK10之后推出的语法糖,用它来定义局部变量,并且var可以进行局部变量类型推断
var 使用
例如用var定义一个int变量
代码语言:javascript复制typescript 代码解读复制代码public class VarDemo {
public static void main(String[] args) {
var a = 1;
a = a 1;
System.out.println(a);
}
}
输出结果为
这里var能推断出a为int类型 如使用List
代码语言:javascript复制csharp 代码解读复制代码public class Var1Demo {
public static void main(String[] args) {
var list = new ArrayList<Integer>();
list.add(1);
list.add(2);
System.out.println(list);
}
}
但这种要注意的是,必须在new ArrayList()指定类型,直接使用
代码语言:javascript复制ini 代码解读复制代码 var list = new ArrayList<>();
会被推断为Object类型
jdk11升级
JDK11对var做了调整,允许var关键字用于Lambda函数里面的参数类型声明,如
代码语言:javascript复制csharp 代码解读复制代码public class Var1Demo {
public static void main(String[] args) {
var result = Stream.of("aa", "bb", "cc").reduce((var x, var y) -> x y);
System.out.println(result.orElseThrow());
var list = Stream.of("aa", "bb", "cc").collect(Collectors.toList());
System.out.println(list);
}
}
var使用要注意的点
1、var不能定义变量
代码语言:javascript复制typescript 代码解读复制代码public class Var2Demo {
public static void main(String[] args) {
var a ;
}
}
这种会报错
2、var只能在方法内定义变量,不允许定义类的成员变量
代码语言:javascript复制kotlin 代码解读复制代码public class Var2Demo {
private var a;
}
这种也是不允许的
3、不能作为方法入参
代码语言:javascript复制typescript 代码解读复制代码public class Var2Demo {
public void process(var list) { }
}
总结
总之,jdk10之后提供使用var方便在开发中使用,提高了程序开发效率,但是在一定程序上可能会降低可读性,合理的利用jdk10提供的var语法糖,可以帮助开发,当然效果因人而异