Kotlin中var和val的区别是什么?何时使用什么?
你好!我刚开始在Java之后学习Kotlin,对变量声明感到困惑。在Java中,我习惯用类型(int, String)和修饰符(final用于常量)声明变量。而在Kotlin中,我看到了两个关键字:var和val。
我了解到val相当于Java中的final,而var是普通的可变变量。但在实践中,我遇到了一些问题。
例如,我写了这样的代码:
```kotlin
fun main() {
var name = "安娜"
name = "玛丽亚" // 这样可以,没问题
val age = 25
age = 30 // 错误!Val cannot be reassigned
}
```
val很清楚——不能重新赋值。但如果val存储的不是基本类型,而是一个对象呢?例如:
```kotlin
val list = mutableListOf("a", "b")
list.add("c") // 这能工作吗?
println(list) // 输出 [a, b, c]
```
这样看来,val不是常量,而只是一个不能更改的引用?还是我理解错了?
另外,我感兴趣的是:什么时候最好使用var,什么时候使用val?这会影响性能吗?