变量声明
Kotlin使用var声明变量,使用val声明不可被更改的变量,变量和类型之间使用:分割。比如:
var name: String = "lxj"
var age: Int = 10
val city = "武汉"
city = "北京" //编译报错
Kotlin有强大的类型推断系统,能够根据变量的值推断出变量的类型,所以类型经常可以省略不写:
var name = "lxj"
var age = 10
数字型
Kotlin的数字类型和Java非常像,提供了如下几种类型来表示数字:
Type | Bit width |
Byte | 8 |
Short | 16 |
Int | 32 |
Long | 64 |
Float | 32 |
Double | 64 |
我们可以用字面量来定义这些数据类型:
val money = 1_000_000L //极具可读性
val mode = 0x0F //16进制
val b = 0b00000001 //byte
val weight = 30.6f
Kotlin还提供了这些数据类型之间相互转换的方法:
println(1.toByte())
println(1L.toInt())
println(1f.toInt())
字符和布尔
Kotlin的字符和布尔,与Java一样。
var c = 'A'
var isLogin = false
数组
数组在Kotlin中用Array表示,一般我们这样创建数组:
val arr = arrayOf(1, 2, 3)
arr[0] //获取第0个元素
arr.size //数组的长度
arrayOf("a", "b").forEach { //遍历数组并打印每个元素
println(it)
}
Kotlin的Array比Java的Array强大太多,支持很多高阶函数,功能几乎和集合一样;高阶函数的部分在后面的集合章节有更详细的讲述。
字符串
字符串类型是String,用双引号""表示:
val s = "abc"
s[0]
s.length
s.forEach { println(it) }
Kotlin的字符串是现代化的字符串,支持原始字符串(raw string),用三个引号包起来:
println("""
床前明月光,疑是地上霜;
举头望明月,低头思故乡。
""".trimIndent()) //字符串的内容会原样输出
同时Kotlin还支持字符串插值,可以将变量的值插入到字符串中:
var name = "李晓俊"
var age = 20
println("大家好,我叫$name,我今年${age}岁了。")
区间
区间(Range)严格来说不属于基本类型,但重开一篇又感觉杀鸡焉用牛刀,所以就放在这了。
区间是用来表示范围的数据类型,比如从1到5,从A到B。它写起来非常简单,要表示从1到5的范围,可以这样写:
var range = 1..5
var range2 = 'A'..'E'
它还有函数形式的写法是1.rangeTo(5),它们是等同的,但1..5形式看起来简洁,使用得比较多。
区间实现了Iterable接口,所以是可迭代可遍历的,可以使用for..in或者forEach来遍历它:
for (i in 1..5){
println(i)
}
(1..5).forEach {
println(it)
}
默认情况下区间是闭区间,也就说1..5是包含1-5的所有值,如果不想包含末尾值,可以使用until关键字实现:
for (i in 1 until 5){
println(i) //将不会打印出5
}
区间遍历时,值是一步一步向上增长,如果希望每次走2步,可以使用step关键字实现:
for (i in 1..5 step 2){
println(i) //将会打印出1,3,5
}
默认的区间是递增遍历,如果你需要一个递减遍历的区间,可以使用downTo做到:
for (i in 5 downTo 1 step 2){
println(i) //将会打印出5,3,1
}