Kotlin官网:https://www.kotlincn.net/docs/reference/server-overview.html
一.基本语法理解:
1.常量和函数的定义:
1.1语法:var/val name : Type
注:没有分号(;),可以省略Type。Kotlin会类型推导出变量的类型
var:可以被修改的变量
var a:String="" //声明不可为null的字符串
var b:String? = null //可以为null的字符串
获取长度时:
a.length //对
b.length //错误的,因为 b 是可以为空的对象,不允许这种写法
b?.length //空时不会执行
c!!.length //空时会执行,抛出空异常
val :是一个只读变量,这种声明变量的方式相当于java中的final变量。一个val创建的时候必须初始化,因为以后不能被改变。
1.2函数
/**
* 等同java的
public int max(int a,int b){
return if (a > b) a else b
* */
fun max(a: Int, b: Int): Int {
return if (a > b) a else b //kotlin没有三元运算符,java可以写成return (a > b) ? a : b
}
调用
max(2,3)
或
max(a=2,b=3)
1.3判空
安全访问表达 account?.length //如果是空的话不执行
Elvis操作符 var v = a?.b ?: c 等价于 v = if(a == null || a.b == null) c else a.b(a是可空的)
避免null检查(确定account不为null) account!!.length //如果是空的话会执行,但会抛出空异常
2.表达式和语句
2.1when
1)基本
when(参数){
条件1 ->操作
条件2 ->操作
条件3,条件4 ->操作
}
eg:
override fun onClick(v: View?) {
when (v?.id) {
R.id.bt_login -> 操作,逻辑代码多时可用{}
R.id.bt_register ->
}
}
}
2)任意对象作为参数,吴灿书表达式
fun mix(c1: Color, c2: Color) = when (setOf(c1, c2)) {
setOf(RED, YELLOW) -> ORANGE
setOf(YELLOW, BLUE) -> GREEN
setOf(BLUE, VIOLET) -> INDIGO
//需要处理 其他 情况
else -> throw Exception("Dirty color")
}
//上面的效率低改成下面无参数
fun mixOptimized(c1: Color, c2: Color) = when {
(c1 == RED && c2 == YELLOW) || (c1 == YELLOW && c2 == RED) -> ORANGE
(c1 == YELLOW && c2 == BLUE) || (c1 == BLUE && c2 == YELLOW) -> GREEN
(c1 == BLUE && c2 == VIOLET) || (c1 == VIOLET && c2 == BLUE) -> INDIGO
else -> throw Exception("Dirty color")
}
2.2 for
for(i in 0..100){}//用in来遍历循环,只能从小到大,包含首尾元素
for(i in 0 until 100){}//只包含头部元素,不包含尾部
for(i in 100 downTo 0){}//倒序遍历,步长默认1,即每次减一,表示闭区间,包含首位元素
for(i in 100 downTo 0 step 2)//设置步长,每次减二