在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”?因为我问的是与文档中的特定例子有关的疑问,而不仅仅是一般的疑问。


当前回答

你可以简单地把它想成:

Var用于setter(值会改变)。

Val用于getter(只读,值不会改变)。

其他回答

瓦尔: 必须添加或初始化值,但不能更改。 var: 它的变量可以在代码中的任何一行中更改。

你可以简单地把它想成:

Var用于setter(值会改变)。

Val用于getter(只读,值不会改变)。

正常的

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你可以改变它

Var是一个可变变量。它是一个可以更改为另一个值的变量。这类似于在Java中声明一个变量。

Val是只读的。它类似于java中的final。val在创建时必须初始化。这是因为它在创建之后就不能更改了。

var test1Var = "Hello"
println(test1Var)
test1Var = "GoodBye"
println(test1Var)
val test2Val = "FinalTestForVal";
println(test2Val);

val变量的值只能赋值一次。

val address = Address("Bangalore","India")
address = Address("Delhi","India") // Error, Reassigning is not possible with val

虽然你不能重新赋值,但你可以修改对象的属性。

//Given that city and country are not val
address.setCity("Delhi") 
address.setCountry("India")

这意味着您不能更改变量所指向的对象引用,但可以更改该变量的底层属性。

可以根据需要多次重新分配var变量的值。

var address = Address("Bangalore","India")
address = Address("Delhi","India") // No Error , Reassigning possible.

显然,它的底层属性可以被改变,只要它们没有被声明为val。

//Given that city and country are not val
address.setCity("Delhi")
address.setCountry("India")