在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用来声明最终变量。val变量的特征

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

Var是一个一般变量

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

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

其他回答

和其他语言一样,Var也是一个变量。 如。

var price: Double

另一方面,val提供了引用功能。 如。

val CONTINENTS = 7
// You refer this to get constant value 7. In this case, val acts as access
// specifier final in Java

而且,

val Int.absolute: Int
    get() {
        return Math.abs(this)
    }
// You refer to the newly create 'method' which provides absolute value 
// of your integer

println(-5.absolute) // O.P: 5

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

你可以简单地把它想成:

Var用于setter(值会改变)。

Val用于getter(只读,值不会改变)。

你需要改变一个变量还是永久设置它?

一个很好的例子,如果它是val pi5places = 3.14159,你会把它设置为val。如果你现在或以后需要改变这个变量,那么你会把它设置为var。 例如:一辆车的颜色,可以是var colorCar = green。之后你可以改变colorCar = blue,作为一个val,你不能。 这里关于可变和不可变的回答很好,但是如果这些术语不是很熟悉或者刚刚开始学习如何编程,可能会很可怕。

VAR用于创建那些值将在应用程序中随时间变化的变量。它与swift的VAR相同,而VAL用于创建那些值在应用程序中不会随时间变化的变量。它与swift的LET相同。