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