3.2 声明变量和值

首先,在Kotlin中, 一切都是对象。所以,所有变量也都是对象(也就是说,任何变量都是根据引用类型来使用的)。

Kotlin的变量分为 var (可变的) 和 val (不可变的)。

可以简单理解为:

var 是可写的,在它生命周期中可以被多次赋值; 而 val 是只读的,仅能一次赋值,后面就不能被重新赋值。

代码示例

1. package com.easy.kotlin

3. import java.util.*

5. class VariableVSValue {
6. fun declareVar() {
7. var a = 1
8. a = 2
9. println(a)
10. println(a::class)
11. println(a::class.java)

13. var x = 5 // 自动推断出 `Int` 类型
14. x += 1

16. println("x = $x")
17. }

19. fun declareVal() {
20. val b = "a"
21. //b  = "b" //编译器会报错: Val cannot be reassigned
22. println(b)
23. println(b::class)
24. println(b::class.java)

26. val c: Int = 1  // 立即赋值
27. val d = 2   // 自动推断出 `Int` 类型
28. val e: Int  // 如果没有初始值类型不能省略
29. e = 3       // 明确赋值
30. println("c = $c, d = $d, e = $e")
31. }
32. }

我们知道,在Java中也分可变与不可变(final)。在Kotlin中,更简洁的、更常用的场景是:只要可能,尽量在Kotlin中首选使用val不变值。因为事实上在程序中大部分地方使用不可变的变量,可带来很多益处,如:可预测的行为和线程安全。