var是JDK10之后推出的语法糖,用它来定义局部变量,并且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类型如使用Listcsharp
代码解读复制代码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对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);
}
}
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语法糖,可以帮助开发,当然效果因人而异