java val变量声明_Kotlin 中 var 与 val 定义变量的区别,及使用场景

看 Kotlin 项目示例代码中,经常出现 var / val 定义变量的情况。于是查了一下两者的区别:

var 定义的变量可以被再次赋值。var 是 variable 的缩写。

val 定义的变量不可以被再次赋值,即引用不可变。val 大概是 value 的缩写。类似于 Java 和 Dart 中的 final 关键字。

测试代码:

>>> var a: Int = 1

>>> a

res2: kotlin.Int = 1

>>> a = 2

>>> a

res4: kotlin.Int = 2

>>> val b: Int = 1

>>> b

res6: kotlin.Int = 1

>>> b = 2

error: val cannot be reassigned

b = 2

^

当对象使用 val 实例化时

val 实例化的对象,其 var 属性还可以进行更改;但是不可以对实例化的对象再赋值

var 实例化的对象没有任何限制

>>> class Language() {

... var name: String = ""

... }

>>> var l = Language("Kotlin")

>>> l.name

res31: kotlin.String = Kotlin

>>> l.name = "Java"

>>> l.name

res33: kotlin.String = Java

>>> l = Language("Java")

>>>

>>> val l2 = Language("Java")

>>> l2.name

res40: kotlin.String = Java

>>> l2.name = "Kotlin"

>>> l2 = Language("Kotlin")

error: val cannot be reassigned

l2 = Language("Kotlin")

^

>>>

val 的使用场景

了解了 var 与 val 的区别之后,立即就产生了一个疑问,“何时应该使用 val?”

一开始我也觉得这是脱裤子放屁式的啰嗦行为,但是看了 kotlin 的一些示例代码之后,感觉还是有一定意义的。

举个例子,我现在定义一个 Button 对象,这个对象指向 layout 中的一个 button,这种情况下使用 val 就有实战意义了,因为这个 Button 变量理论上是不应该再指向其他 button 了,能很好的规避乱赋值的情况;而且还不影响修改 Button 的属性。

所以,原则应该是,尽量使用 val。

延伸阅读

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值