声明变量和值

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

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

可以简单理解为:

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

代码示例

  1. package com.easy.kotlin
  2. import java.util.*
  3. class VariableVSValue {
  4. fun declareVar() {
  5. var a = 1
  6. a = 2
  7. println(a)
  8. println(a::class)
  9. println(a::class.java)
  10. var x = 5 // 自动推断出 `Int` 类型
  11. x += 1
  12. println("x = $x")
  13. }
  14. fun declareVal() {
  15. val b = "a"
  16. //b = "b" //编译器会报错: Val cannot be reassigned
  17. println(b)
  18. println(b::class)
  19. println(b::class.java)
  20. val c: Int = 1 // 立即赋值
  21. val d = 2 // 自动推断出 `Int` 类型
  22. val e: Int // 如果没有初始值类型不能省略
  23. e = 3 // 明确赋值
  24. println("c = $c, d = $d, e = $e")
  25. }
  26. }

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