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


当前回答

Val (from value): 不可变的参考。用val声明的变量是不可以的 在初始化后重新赋值。它对应于Java中的最后一个变量。

Var (from variable): 可变参考。这样一个变量的值是可以改变的。 此声明对应于一个常规(非final) Java变量。

其他回答

Val像常量变量一样,本身不能改变,只能读取,但Val的属性可以修改; Var就像其他编程语言中的突变变量一样。

用var定义的变量是可变的(读和写)

用val定义的变量是不可变的(只读)

Kotlin可以在android studio中删除findViewById和减少setOnClickListener的代码。完整参考:Kotlin令人敬畏的特性

可变变量的值可以随时改变,而不可变变量的值不能改变。

哪里用var,哪里用val ?

在值经常变化的地方使用var。例如在获取android设备的位置时

var integerVariable : Int? = null

在整个类的值没有变化时使用val。例如,你想通过编程方式设置文本视图或按钮的文本。

val stringVariables : String = "Button's Constant or final Text"

Val是不可变的,它的属性是在运行时设置的,但是可以使用const修饰符使它成为编译时常量。 kotlin中的Val与java中的final相同。

Var是可变的,它的类型是在编译时确定的。

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

var x:Int=3
x *= x

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

Val是不可变的,final,第一个赋值不能改变。

val name:String = "andy"

name = "thomas" //Error: Val cannot be reassigned

Var是可变的,可重赋的,你可以反复改变它的值。

val a:Int = 1
var b:Int = 1
println("${a + b}") // output 2

b = 4
println("${a + b}") // output 5

我认为最简单的记忆方法是: Val =变量final Var =变量可重赋,或val的相反。