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


当前回答

在kotlin中,我们可以用两种类型声明变量:val和var。 Val不能重新赋值,它作为最终变量。

val x = 2
x=3 // cannot be reassigned

另一方面,var可以被重新赋值它是可变的

var x = 2
x=3 // can be reassigned

其他回答

简单地说, var(可变的)和val(在Java中不可变的值(最终修饰符))

var x:Int=3
x *= x

//gives compilation error (val cannot be re-assigned)
val y: Int = 6
y*=y

val -不可变(初始化后不能重新赋值)

var - Mutable(可以改变值)

例子

在 Kotlin 中 - val n = 20 & var n = 20

在Java - final int n = 20;& int n = 20;

基本上

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

Val用来声明最终变量。val变量的特征

必须初始化 值不能更改或重新分配

Var是一个一般变量

稍后可以使用lateinit修饰符初始化 lateinit也用于全局变量 我们不能将它用于局部变量] 值可以更改或重新分配,但不能在全局范围内

kotlin中的Val就像Java中的final关键字

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