变量
在Kotlin中,定义变量是用关键词开始,然后是变量名称,最后才是变量类型,就像下面这个例子一样:
val a: Int = 10000
当然,如果你不指明变量的类型,编译器也能分析出 = 后的表达式的值,并将它的类型作为变量的类型:
var string = "hello world!"
但如果变量没有初始化器,编译器无法推断出它的类型,这时就必须显式地指定类型:
var string: String
可变变量和不可变量
从上文可以看到,Kotlin中声明变量的关键词有两个:val 和 var,其中val声明的是不可变引用,即不能在初始化之后再次赋值的变量;而var声明的是普通的变量:
var variable = 100
variable = 200 // OK
val value = variable
value = 100 //error: Val cannot be reassigned
Kotlin推荐尽可能地使用val来声明变量,仅在必要的时候使用var。
基本类型
数字
Kotlin 提供了如下的内置类型来表示数字:
type | Bit width |
---|---|
Double | 64 |
Float | 32 |
Int | 32 |
Long | 64 |
Short | 18 |
Byte | 8 |
在Kotlin中,较小类型并不是较大类型的子类型,因此较小的类型不能隐式转换为较大的类型
val c = 100
val d: Long = c //error: Type mismatch
如果要转换的话,应该使用显示转换。每个数字类型支持如下的转换:
- toByte(): Byte
- toShort(): Short
- toInt(): Int
- toLong(): Long
- toFloat(): Float
- toDouble(): Double
- toChar(): Char
并且算术运算时也会有重载做适当转换:
val l = 1L + 3 // Long + Int => Long
字符
在Kotlin中,字符用 Char 类型表示,它们不能直接当作数字。字符字面值用单引号括起来: ‘1’。 特殊字符可以用反斜杠转义。 支持这几个转义序列:\t、 \b、\n、\r、\’、\”、\ 和 $。 编码其他字符要用 Unicode 转义序列语法:’\uFF00’。
布尔值
布尔用 Boolean 类型表示,它有两个值:true 和 false。若需要可空引用布尔会被装箱。内置的布尔运算有:
- || 短路逻辑或
- && 短路逻辑与
- ! 逻辑非
字符串
字符串用 String 类型表示。字符串是不可变的。 字符串的元素——字符可以使用索引运算符访问: s[i]。 可以用 for 循环迭代字符串:
val str = "abcd"
for (c in str) {
println(c)
}
在Kotlin中有一个新特性,叫做字符串模板。它可以让你在字符串字面值中引用局部变量只需要在变量名称中加上字符‘$’ ,这等价于使用 ‘+’连接字符串。如果要在字符串中使用‘$’ ,可以使用转义符‘\$’。如果要引用更复杂的表达式,只需要把表达式用花括号括起来。
val str = "abcd"
for (index in str.indices) {
println("in $index is ${str[index]}")
}
总结
本文主要简单总结了Kotlin中变量的定义方式和介绍了几种基本的数据类型,涉及到的常见关键字有:
关键字 | 说明 |
---|---|
val | 声明不可变量 |
var | 声明可变变量 |