Kotlin 中声明常量和变量的方式与 Java 的差异较大,完整的声明格式是:

val|var 变量名[: 变量类型][= 初始化赋值]

完整的声明分为四个部分:

  1. val 或 var:不可省略。

    val 声明常量,只可以赋值一次;var 声明变量,可以多次赋值。

    建议尽量使用 val,能不使用 var 就不使用 var。在使用 IDEA 编写 Kotlin 程序时,如果声明了 var 变量而没有改变它的值,就会提示你把 var 改成 val。这里体现了 Kotlin 语言追求的价值:“清楚地说明每一个要素,避免因为混淆而出现错误”,所以要求变量能不变就不变,以免出现不必要的错误。

    val a = 1 //定义常量 a,赋值为 1a = 1 + 1 //编译错误,val 声明的常量只能赋值一次var b = 10 //定义变量 b,赋值为 10b = 1 + 1 //将 b 重新赋值为 2
  2. 变量名:不可省略。

    Kotlin 的命名风格与 Java 相同,变量名应该使用骆峰法命名,首字母小写,之后每个单词首字母大写,不使用下划线分隔单词。

    val anInt = 1val aString = "Hello World"
  3. [: 变量类型]:当有初始化赋值时可省略。

    声明变量的类型用英文冒号表示,放在变量名后,可以是 Kotlin 和 Java 中的引用类型。为什么一定要是引用类型呢?因为 Kotlin 抛弃了 Java 中的基本数据类型,所有数字类型都是引用类型。

    如果没有指定数据类型,Kotlin 会根据后面的初始化赋值自动推断数据类型

    //定义一个 Kotlin.Int 类型的变量并赋为 1,这个类型对应 Java 中的 int 类型val intKotlin: Int = 1val intJava: int //编译错误,不能定义为 Java 中的基本数据类型val listJava: List<String> //定义一个 Java 中的引用类型变量val intInfferred = 1 //根据赋值自动推断为 Kotlin.Int 类型
  4. [= 初始化赋值]:当指定了数据类型时可省略。

    一个表达式,不能与指定的变量类型冲突。

    val d: Int = "String" //编译错误,表达式类型与声明的变量冲突