0%

Android中的Kotlin基础

变量、常量、数组

定义变量使用var,定义常量使用val,Kotlin会根据值自动推断类型,不需要自行指定,如下:

var a = 1
val b = 2

当然你要指定也可以:

var a: Int = 1

定义可空变量和常量:

var android: String? = null
val name: String? = null

!!强制调用,空时抛出空指针异常,?.为空时返回空,Elvis运算符?:表示空时赋予某个值:

name!!.toString()
name?.toString()
name ?: "haha"

创建数组:

val arr = arrayOf(1, 2 3) // 都有初始值,无固定类型
val arr1: IntArray = intArray(1, 2, 3) // 都有初始值的Int数组
val arr2 = arrayOfNulls<Int>(5) // 无初始值的Int数组
val arr3 = emptyArray<Int>()

条件和循环语句

条件语句可以做为一个值:

val name: String = if (count < 10) {
    "haha"
} else {
    "hehe"
}

when语句:

when {
    count == 5 -> "aaa"
    cout < 10 -> "bbb"        
    else -> "ccc"
}

Kotlin中循环有for,while和do…while三种,对于for可以用in进行遍历,比如:

for (i in 1...3) {
    ......
}

注意kotlin中的return如果是在lambda表达式中,默认是针对外层函数返回,要实现只对lambda表达式返回,需要用return@xxx。

函数

普通函数定义:

fun add(a: Int, b: Int): Int {
    return a + b
}

匿名函数定义:

fun(a: Int, b: Int) = a + b

高阶函数

属性初始化

可以在定义时就初始化:

val index: Int = 12

也可以在init块中初始化:

val index: Int
init {
    index = 12
}

对于类似View引用的属性的初始化:

private var mView: View? = null

或者:

private lateinit var mView: View

最后在填充布局后初始化:

mView = findViewById(R.id.xxx)

协程

其它

(1)使用字符串模板:

val s = "kotlin"
println("hello $s") // 打印hello kotlin

(2)使用is进行类型判断:

val a = "hello kotlin"
if (a is String) {
    println(a.length)
}

注意if里面可以直接当成具体的类型对象使用,不需要再进行强制类型转换,判断不是某种类型用!is。