Home Articles

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

Asked
Viewed 1041 times
13

我正在努力学习Kotlin . 与Java相比,Kotlin中的 valvarinternal 是什么?

在Java中:

RadioGroup radioGroup;
 RadioButton button;
 Button submit;

转换后显示:

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

2 Answers

  • 28

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

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

    只要你能使用 val 就是Kotlin的惯例,如果你知道你将在某个地方改变它的 Value ,那么你应该只做 var .

    请参阅有关defining local variablesdeclaring properties的官方文档 .


    internal 是一个未见't exist in Java. It marks a member of a class that will only be visible within the module it'的可见性修饰符 . 这与Java中默认 package 可见性为您提供的内容类似(这就是转换器在转换具有 package 可见性的成员时将使用它的原因) . 但是,'s not exactly the same. Also, note that it'不是Kotlin中的默认可见性,默认情况下,Kotlin中的类及其成员为 public .

    有关visiblity modifiers的文档中有更多内容 .

  • 11

    val :不可变数据变量

    var :可变数据变量

    将Java代码转换为Kotlin时:

    • 转换器发现你没有初始化变量,所以它使它们成为 var (可变),因为你稍后会初始化它们 .

    • 可能你的变量未被使用,所以转换器将它们变成了内部,猜测你不会在你的包之外使用它们 .

    有关 varvar 的详细信息,请阅读thisinternal 阅读this .

Related