编程语言
113
首先,在Kotlin中, 一切都是对象。所以,所有变量也都是对象(也就是说,任何变量都是根据引用类型来使用的)。
Kotlin的变量分为 var
(可变的) 和 val
(不可变的)。
可以简单理解为:
var
是可写的,在它生命周期中可以被多次赋值; 而val
是只读的,仅能一次赋值,后面就不能被重新赋值。
代码示例
package com.easy.kotlin import java.util.* class VariableVSValue { fun declareVar() { var a = 1 a = 2 println(a) println(a::class) println(a::class.java) var x = 5 // 自动推断出 `Int` 类型 x += 1 println("x = $x") } fun declareVal() { val b = "a" //b = "b" //编译器会报错: Val cannot be reassigned println(b) println(b::class) println(b::class.java) val c: Int = 1 // 立即赋值 val d = 2 // 自动推断出 `Int` 类型 val e: Int // 如果没有初始值类型不能省略 e = 3 // 明确赋值 println("c = $c, d = $d, e = $e") } }
我们知道,在Java中也分可变与不可变(final)。在Kotlin中,更简洁的、更常用的场景是:只要可能,尽量在Kotlin中首选使用val
不变值。因为事实上在程序中大部分地方使用不可变的变量,可带来很多益处,如:可预测的行为和线程安全。