变量声明

和Java不一样,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,从AB。它写起来非常简单,要表示从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
}

要判断一个数字是否在一个区间之内,需要使用in操作符,比如:

println(3 in 1..5) //true
更新时间: 6/1/2019, 11:25:02 AM