1. 函数
1.1 函数的声明
函数定义使用关键字 fun,参数格式为:参数 : 类型
fun sum(a: Int, b: Int): Int {
return a + b
}
1.2 省略返回值类型
将表达式作为函数体、返回值类型自动推断的函数:
fun sum1(a: Int, b: Int) = a + b
1.3 无返回值的函数
在 Kotlin 中,函数无返回值,用关键字:Unit ,类似 Java 中 void:
fun sum2(a: Int, b: Int): Unit {
Log.e("zzw", "无返回值的函数")
}
Unit 返回类型可以省略:
fun sum3(a: Int, b: Int) {
Log.e("zzw", "无返回值的函数,返回值类型可以省略")
}
2. 变量
2.1 变量的声明
定义只读局部变量使用关键字 val 定义,可重新赋值的变量使用 var 关键字:
val mA = 1
val mB = 2
var mC = 3
当尝试给 val 再次赋值,会有错误提醒:
3. 注释
Kotlin 支持单行(或行末)与多行(块)注释:
// 这是一个行注释
/* 这是一个多行的
块注释。 */
Kotlin 中的块注释可以嵌套:
/* 注释从这里开始
/* 包含嵌套的注释 */
并且在这里结束。 */
4. 条件表达式
Kotlin 中条件表达式跟 Java一样:
fun maxNum(a: Int, b: Int): Int {
if (a > b) {
return a
} else {
return b
}
}
5. 空值与 null 检测
当某个变量的值可以为 null 的时候,必须在声明处的类型后添加 ? 来标识该引用可为空:
var a:String ?="zzw"
var b:String ="zzw"
如果是普通的声明变量:
var b:String ="zzw"
当对其赋值为 null 的时候,会报错:
对于 a,因为 a 可能为空,所以无法进行如下的调用:
对于 b,不存在空的情况,不存在发生空指针的情况,所以可以进行如下的调用:
b.length
如果 a 仍然要调用 a.lenght,则用如下的方式:
var l = a?.length ?: -1
如果 a 为 null,返回-1,否则返回 a.length。
6. 类型检测与自动类型转换
is 运算符检测一个表达式是否某类型的一个实例。
fun getStringLength(obj: Any): Int? {
if (obj is String) {
return obj.length
} else {
return null
}
}
7. 循环
7.1 for 循环
val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
Log.e("zzw", item);
}
运行结果:
2019-09-23 22:23:19.932 5791-5791/cn.zzw.messenger.hellokotlin E/zzw: apple
2019-09-23 22:23:19.932 5791-5791/cn.zzw.messenger.hellokotlin E/zzw: banana
2019-09-23 22:23:19.932 5791-5791/cn.zzw.messenger.hellokotlin E/zzw: kiwifruit
或者:
val items = listOf("apple", "banana", "kiwifruit")
for (index in items.indices) {
Log.e("zzw","item at $index is ${items[index]}")
}
运行结果:
2019-09-23 22:29:03.650 6060-6060/cn.zzw.messenger.hellokotlin E/zzw: item at 0 is apple
2019-09-23 22:29:03.650 6060-6060/cn.zzw.messenger.hellokotlin E/zzw: item at 1 is banana
2019-09-23 22:29:03.651 6060-6060/cn.zzw.messenger.hellokotlin E/zzw: item at 2 is kiwifruit
7.2 while 循环
val items = listOf("apple", "banana", "kiwifruit")
var index = 0
while (index < items.size) {
Log.e("zzw", "item at $index is ${items[index]}")
index++
}
8. when 表达式
fun describe(obj: Any): String =
when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "Unknown"
}
9. 使用区间
使用 in 运算符来检测某个数字是否在指定区间内:
var x = 5;
if (x in 1..10) {
Log.e("zzw", "fits in range")
}
判断是否在范围外:
if (x !in 6..10) {
Log.e("zzw", "x is out of rang")
}
参考: