Kotlin 中的变量,与 Java 的差异:'var' vs. 'val'?

2022-09-02 19:18:23

我正在尝试学习 Kotlin。与 Java 相比,在 Kotlin 中是什么?valvarinternal

在爪哇:

 RadioGroup radioGroup;
 RadioButton button;
 Button submit;

转换后,它显示:

 internal var radioGroup: RadioGroup
 internal var button: RadioButton
 internal var submit: Button

答案 1

val并且是可用于声明变量(和属性)的两个关键字。不同之处在于,using 会为您提供一个只读变量,这与在 Java 中使用关键字相同。varvalfinal

var x = 10    // int x = 10;
val y = 25    // final int y = 25;

尽可能使用是 Kotlin 中的约定,只有当你知道自己会在某个地方更改其值时,才应该做一些事情。valvar

请参阅有关定义局部变量声明属性的官方文档。


internal是 Java 中不存在的可见性修饰符。它标记的类的成员,该类仅在其所在的模块中可见。这与 Java 中默认可见性为您提供的可见性类似(这就是为什么转换器在转换具有可见性的成员时会使用它的原因)。但是,它并不完全相同。另外,请注意,它不是 Kotlin 中的默认可见性,Kotlin 中的类及其成员是默认的。packagepackagepublic

文档中有更多关于可见性修饰符的信息


答案 2

val:不可变数据变量

var:可变数据变量

当您将 Java 代码转换为 Kotlin 时:

  1. 转换器发现您尚未初始化变量,因此它使它们(可变),因为稍后您将初始化它们。var

  2. 可能你的变量是未使用的,所以转换器将它们放在内部,猜测你不会在软件包之外使用它们。

有关此内容的更多信息,请阅读此内容,以及阅读此内容varvarinternal


推荐