在Kotlin中var和val的区别是什么?

我已经通过了这个链接:

属性和字段

如本连结所述:

只读属性声明的完整语法不同于 可变1有两种方式:它以val开头,而不是var 不允许设置。

但在此之前有一个使用setter的例子。

fun copyAddress(address: Address): Address {
    val result = Address() // there's no 'new' keyword in Kotlin
    result.name = address.name // accessors are called
    result.street = address.street
    // ...
    return result
}

var和val的确切区别是什么?

为什么我们两者都需要?

这不是Kotlin中的变量的副本,与Java的区别:'var'和。“val”?因为我问的是与文档中的特定例子有关的疑问,而不仅仅是一般的疑问。


当前回答

正常的

Val用于静态字段,就像Java中的静态关键字一样 类似于Java中的Static /与kotlin中的相同 Var在Kotlin中表示可变字段,你可以改变它。 大多数情况下,当你想要一次性在静态内存中保存值时,就会使用Static,

例子:

 if you assign

 val a=1
 a=3  You can not change it 

你不能改变,这是最终值和静态 var b = 2 b=4你可以改变它

其他回答

Val是不可变的,它的属性是在运行时设置的,但是可以使用const修饰符使它成为编译时常量。 kotlin中的Val与java中的final相同。

Var是可变的,它的类型是在编译时确定的。

val属性类似于Java中的final属性。您只允许为它分配一个值一次。当你第二次尝试给它重新赋值时,你会得到一个编译错误。而var属性是可变的,你可以在你想要的任何时候自由地重新分配它。

Val像常量变量一样,本身不能改变,只能读取,但Val的属性可以修改; Var就像其他编程语言中的突变变量一样。

+----------------+-----------------------------+---------------------------+
|                |             val             |            var            |
+----------------+-----------------------------+---------------------------+
| Reference type | Immutable(once initialized  | Mutable(can able to change|
|                | can't be reassigned)        | value)                    |
+----------------+-----------------------------+---------------------------+
| Example        | val n = 20                  | var n = 20                |
+----------------+-----------------------------+---------------------------+
| In Java        | final int n = 20;           | int n = 20;               |
+----------------+-----------------------------+---------------------------+

参考

基本上

Var =变量,所以它可以改变 Val = value,所以它不能改变。