包声明
package site.nebulas
import java.util.*
类
class Hello {
}
函数
fun main(args: Array<String>) {
println("Hello, world!")
}
可变长参数函数
fun vars(vararg v:Int){
for(vt in v){
print(vt)
}
}
lambda(匿名函数)
val sumLambda: (Int, Int) -> Int = {x,y -> x+y}
变量
var <标识符> : <类型> = <初始化值>
常量
val <标识符> : <类型> = <初始化值>
Late initialization
lateinit var myUtil: MyUtil
字符串模板
$ 表示一个变量名或者变量值
$varName 表示变量值
${varName.fun()} 表示变量的方法返回值:
val s1 = "a is $a"
val s2 = "${s1.replace("is", "was")}, but now is $a"
NULL检查机制
//类型后面加?表示可为空
var age: String? = "23"
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回 null
val ages1 = age?.toInt()
//age为空返回-1
val ages2 = age?.toInt() ?: -1
类型检测
if (obj is String) {
// 做过类型判断以后,obj会被系统自动转换为String类型
return obj.length
}
区间
for (i in 1..4) print(i) // 输出“1234”
for (i in 1..4 step 2) print(i) // 输出“13”
// 使用 until 函数排除结束元素
for (i in 1 until 10) { // i in [1, 10) 排除了 10
println(i)
}