Kotlin容易遗忘的关键字备记

1."::"

表示类的引用,eg:

startActivity(Intent(this, MyFragmentActivity::class.java))

2.var、val、const

var:定义变量

val:定义常量(final修饰)

const:用于修饰val,const val与val不同的是,const val 修饰的变量相当于java中public static final ,val修饰的变量为private static final,并为该变量提供公共的public static get XX()方法

3.lazy、lateinit

适用于初始化时的延时加载,只有在调用的时候才会初始化

lazy 用于val,lazy 应用于单例模式(if-null-then-init-else-return),而且当且仅当变量被第一次调用的时候,委托方法才会执行,第二次调用只会返回结果

lateinit用于var,一般应用于生命周期函数中变量的初始化,避免了非空检查。但是如果你没有对其进行初始化,那么将报出未初始化的异常

4. ?、!!

"?"表示该值允许为null

"!!"表示该值不允许为null,否则将报空指针错误

5.data

data 用在class前面,表示当前类是数据类,将自动帮你实现getter/setter,equals(),hashCode(),copy()等函数

6. object、component object

object:相当于该类中的所有属性、方法都为静态方法,object类实例本身为单例,object也可以表示为一个匿名类,或不存在的对象。

 btn.setOnClickListener(object :View.OnClickListener{
            override fun onClick(v: View?) {
                
            }

        })
val newObj = object {
    var x = "a"
    var y = "b"
}
 
Log.d(tag, "x:${newObj.x}, y:${newObj.y}")

component object:相当于该代码块内的属性、方法为静态属性、方法

7.一些有趣的函数

let:获取当前调用者对象,并执行函数表达式。eg:

 val b:String? = null
        b?.let { 
            println(it)
        }

在当前let函数表达式内,可以用it指代b,表示当b不为空时执行let函数表达式

apply:与let不同的地方是,返回当前调用者对象,eg:

  b?.apply {
            b.length
        }.let { println(it) }

run:与apply不同的是,返回函数表达式中最后一个值,eg:

 val b:String? = "b"
        b?.run {
            val c = "c"
            c
        }.let { println(it) }

with:与apply类似,但是是将值传入with函数参数中,eg:

with("d"){
            length
        }

8. 嵌套类和内部类

嵌套类:不持有外部类的引用,声明一个嵌套类:Outer.Nested()

内部类:持有外部类的引用,声明一个内部类:Outer().Nested()

9. opetator 重载操作符,比如重载kotlin默认的set、get方法

10. inline 内联函数,对于需要频繁调用的函数,会经常的进栈出栈,使用内联函数可以调高性能,内联函数并没有函数这个变量,所谓的函数名只是为了方便开发人员

11. out in 关键字

out 协变,相当于java中的? extends T

in 逆变,相当于java中的? super T 

kotlin和java都支持使用时型变,不同的是kotlin还支持声明时型变。

个人为方便记忆,out 表示为通配符上界,只可读取(即不能使用set方法),不可写入。in 表示通配符下界,只可写入(只能set)不可读取

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值