java 10 和 kotlin 中的 “var”

2022-09-01 22:34:28

我知道我们可以使用“var”关键字来定义Kotlin中的变量:

var foo = 3

最新的java更新(java 10)也引入了“var”类型:

var bar = new int[]{1, 2, 3}; // int[] bar = {1, 2, 3}

我的问题是,这些语言之间使用“var”有什么区别?


答案 1
  1. 它们的含义非常不同,即使基本情况下的语法最终是相同的:var x = ...

    1. var在 Kotlin 中表示“这是一个可变变量”,在推断类型和显式类型时都可以使用:var x: String = ...;

    2. var在Java中意味着“这是一个具有推断类型的变量”,并且可以用于可变和变量。final

  2. var在Java中只能用于局部变量; 在 Kotlin 中也用于属性。var


答案 2

根据Java 10的发行说明,它指出:

我们寻求通过减少与编写Java代码相关的仪式来改善开发人员体验,同时保持Java对静态类型安全的承诺,允许开发人员省略通常不必要的局部变量类型的清单声明。例如,此功能将允许如下声明:

var list = new ArrayList<String>(); // infers ArrayList<String>
var stream = list.stream(); // infers Stream<String>

所以基本上,这是为了适应程序员的懒惰;而不是写,你现在可以省略,并用 替换它,从而允许Java推断哪种类型是 - 它能够做到这一点,因为变量在定义时被初始化。请注意,初始化时必须推断出 的类型(在上面的情况下,您将添加到 )。因此,Java 仍然保留其静态类型声明。List<String> list = new ArrayList<>();List<String>varlistlistStringnew ArrayList<String>();

与 Kotlin 有什么区别?

在 Kotlin 中定义的变量的类型也是推断出来的(但在 的情况下也可以是显式的),并且 Kotlin 也是一种静态类型语言。varvar foo: Int