一、变量
在Kotlin中定义变量的方式和Java区别很大,在Java中如果想要定义一个变量,需要在变量前面声明这个变量的类型,比如说int a表示a是一个整型变量,String b表示b是一个字符串变量。而Kotlin中定义一个变量,只允许在变量前声明两种关键字:val和var。
1、val(value的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应Java中的final变量。
2、var(variable的简写)用来声明一个可变的变量,这种变量在初始赋值之后仍然可以再被重新赋值,对应Java中的非final变量。
举个例子:
注意,Kotlin每一行代码的结尾是不用加分号的,如果你写惯了Java的话,在这里得先熟悉一下。
在上述代码中,使用val关键字定义了一个变量index,并将它赋值为11,这里index就会被自动推导成整型变量。因为既然你要把一个整数赋值给index,那么index就只能是整型变量,而如果你要把一个字符串赋值给index的话,那么index就会被自动推导成字符串变量,这就是Kotlin的类型推导机制。
但是Kotlin的类型推导机制并不总是可以正常工作的,比如说如果我们对一个变量延迟赋值的话,Kotlin就无法自动推导它的类型了。这时候就需要显式地声明变量类型才行,Kotlin提供了对这一功能的支持,语法如下所示:
val a:Int = 10
如果现在你尝试将一个字符串赋值给a,那么编译器就会抛出类型不匹配的异常。