Kotlin的val和var关键字解释(附实例)

179 阅读1分钟

Kotlin中的valvar 两个关键字都是用来声明变量的。

这两个关键字的唯一区别是,var 关键字的值可以重新分配,而val 则不能。

为了说明这个区别,请看下面的例子:

var myNum = 15
myNum = 20

在上面的例子中,变量myNum 的初始值是15 ,然后被改为20

当你使用val 关键字来声明该变量时,重新赋值将触发一个错误:

val myNum = 15
myNum = 20 // Error: Val cannot be reassigned

但是,尽管你不能改变val 变量的值,但如果变量类型是一个对象,变量的属性仍然可以被改变。

例如,假设你有一个Member 类,有一个name 属性,如下所示:

class Member(var name: String)
val user = Member("Nathan")
user.name = "Jack"

即使user 对象是用val 关键字声明的,user 对象的name 属性仍然可以被改变。

但这是因为name 属性是用var 关键字定义的。如果你使用val 关键字来定义该属性,那么改变该属性将引发同样的错误:

class Member(val name: String)

val user = Member("Nathan")
user.name = "Jack" // Error: Val cannot be reassigned

总结一下,任何使用val 声明的变量都是不可变的(不能重新分配),而var 变量是可变的(可以重新分配)。

当你的变量是一个对象时,用于声明任何属性的关键词将决定该属性是否可以被重新分配。