Kotlin 常用关键字符说明:
- ? 可空类型
声明的变量是否可以为空
fun StrLen(s:String?):Int = s.length
- ? 安全调用运算符
被引用对象是否为空
s?.length
- as 安全转换运算符
尝试把值转换成给定的类型
object as? Person
- as? 安全转换运算符
尝试把值转换成给定的类型,如果类型不合适就返回null
object as? Person
- !! 非空断言
如果值为null就抛出NullPointerException空指针异常(Kotlin不推荐使用非空断言,通常我们会用?:来防止程序运行时报空指针异常而崩溃)
var s:String = s!!
//如果s为null则会抛出空指针异常,并且异常会指向使用!!的这一行
println(s)
//如果s为null则会抛出空指针异常
//使用断!!可以很方便的在抛出空指针异常的时候定位到异常的变量的位置
//但是千万不要连续使用断言!!
student!!.person!!.name
//如果报空指针异常了则无法判断到底是student为空还是person为空,所以不要连续使用断言!!
- ?: Elvis运算符(null合并运算符)
使用 ?: 运算符可以设置当检查结果为空的时候的返回值
fun foo(s:String?){
val t:String = s ?: ""
//如果?:左边的值不为空返回左边的值,如果为空返回""
}
- let函数和**?.**同时使用来处理可空表达式
let函数只有左侧表达式不为空的时候才会调用
person?.let{ //内部的it一定是非空的 }
//如果person为空就不会调用let函数
//如果person不为空才会调用let函数,
//所以?.和let函数配合使用可以很方便的处理可空表达式
person?.let {
println(it.name)
//输出name
}
- : 继承关键符
abstract class BaseFragment : Fragment() {
}
- fun 声明方法
override fun onDestroyView() {
super.onDestroyView()
unbinder?.unbind()
}
- override 声明重写父类的方法
override fun onDestroyView() {
super.onDestroyView()
unbinder?.unbind()
}
- var 是一个可变变量
private var myAdapter: MyAdapter? = null
- val 是一个不可变变量
val finalValue = "我"
- inner 标记嵌套类,使其成为内部类:可访问外部类的成员
class AlbumFolderFragment : BaseFragment() {
private var myAdapter: MyAdapter? = null
override fun initView(mView: View?) {
myAdapter = MyAdapter()
}
private inner class MyAdapter : BaseAdapter() {
}
}
- companion object 饰为伴生对象,伴生对象在类中只能存在一个,类似于java中的静态方法 Java 中使用类访问静态成员,静态方法。
ompanion object {
@JvmStatic
fun newInstance(): MyFragment {
val myFragment = MyFragment()
val args = Bundle()
myFragment.arguments = args
return albumFolderFragment
}
}
-
Any 类型是 Kotlin 中 所有非空类型(ex: String, Int) 的根类型
当我们需要和 Java 互操作的时候,Kotlin 把 Java 方法参数和返回类型中用到的 Object 类型看作 Any(更确切地说是当做「平台类型」)。当 Kotlin 函数中使用 Any 时,它会被编译成 Java 字节码中的 Object。 -
MutableList 可变集合
MutableSet 可变集合 -
:: 支持函数作为参数,是 Kotlin 自带的特性,:: 的作用跟这个特性无关,不过它能够使函数调用更为简,如下
Plugin::class
参考文章:https://blog.csdn.net/baidu_31093133/article/details/81434181