kotlin中与java用法一致的关键字包括:override ,while 等
· open
在kotlin一个类需要被另一个类继承的话,需要用到open关键字
open class OpenClass {}
· is
判断类型
fun testIs() {
var a: Any? = null;
a = 3L
if (a is Int) {
println("a is int")
} else if (a is Long) {
println("a is long")
} else {
println("a not int or long")
}
}
· when
相当于swith
,我们使用when来优化一下上一段代码
fun testWhen1() {
var a: Any? = null;
a = 3L
when (a) {
is Int -> println("a is int")
is Long -> println("a is long")
else -> println("a not int or long")
}
}
fun testWhen2() {
var a = 2;
when (a) {
in 1..5 -> println("a in 1~5")
in 6..10 -> println("a in 6~10")
else -> println("a > 10")
}
}
· as
强制类型转换
var Context.app: KotlinApplication
get() {
return applicationContext as KotlinApplication
}
set(value) {
app = value
}
· in
表示在范围内,..
表示一个范围
fun testIn() {
var a = 3
if (a in 1..5) {
println("a in 1~5")
}
}
· for
基本和java中差不多,以下代码相当于java中的 fori
for (i in list.indices) {
println(list.get(i))
}
以下代码相当于java中的 foreach
for (item in list) {
println(item)
}
kotlin中也有foreach,但并非一个关键字,用法如下
list.forEach {
println(it)
}
· lateinit
字面上就能看出来,用于延迟初始化,当一个var不能为空,但是初始没赋值时,可以用lateinit修饰,如果在第一次使用被lateinit修饰的变量仍然没有值,会抛出异常。lateinit只能用于修饰var,不能修饰val.
lateinit var age:String
· by lazy{}
用于延迟初始化一个val,在第一次使用该常量之前会执行lazy中的初始化代码
val prefs by lazy { context.getSharedPreferences("KotlinLearnDemo", Context.MODE_PRIVATE) }
· internal
被internal修饰的变量或者类,是模块内可见。
. inner
表示内部类
· init{}
相当于java中的自由块
init {
println("初始化")
}
· inline
定义一个内联函数
·
相当于java中的 super xClass>
·
相当于java中的 extend xClass>
本文代码链接:https://github.com/sunflowerseat/KotlinDemo
暂时写这些,之后再补充,文章内容如有错误欢迎指正。
对本文内容有任何疑问欢迎加群讨论:283272067
下一篇:Kotlin for Android - 实战记录<一>