kotlin学习笔记1

kotlin-null判断总结

kotlin-null判断总结 - 简书 (jianshu.com)

Kotlin 空安全(null-safety):再见 NullPointerException (qq.com)

1.?和!!

"?"加在变量名后,系统在任何情况不会报它的空指针异常
"!!"加在变量名后,如果对象为null,那么系统一定会报异常!

定义变量时,可在类型后面加一个问号?,表示该变量是Nullable,不加表示该变量不可为null。如下

var s:String? = null
var s2:String = "xxx" //如果该变量被赋值为null,则编译不通过

从中可以看出,在为变量s设置值的时候,是直接赋值的;而为变量s2赋值的时候,首先进行了非空判断,这保证了s2不可能为null。

        对于可以为null的变量,在使用该变量的时候,必须用变量名+?(如上面的s?)的形式进行调用,表示如果该变量为null,则不执行该变量调用的方法。如:
 

    s = "yyy"//赋值时不需要使用s?形式
    var l= s?.length//如果s为null,则不执行length方法

     当s为null时,不会执行length方法,从而避免了java中频繁的空指针异常。

嗯嗯嗯 Kotlin 针不错

Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两
种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理
返回值为 null或配合?:做空判断处理

//类型后面加?表示可为空
var age: String? = "23" 
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回 null
val ages1 = age?.toInt()
//age为空返回-1
val ages2 = age?.toInt() ?: -1

open 关键字

在Kotlin开发中类和方法默认不允许被继承和重写,等同于Java中用 final 修饰类和方法。
如果在Kotlin 中类和方法想被继承和重写,需添加open 关键字修饰。

lateinit的作用:延迟初始化,只能修饰var, 不能对 java 基本类型使用,例如:DoubleIntLong等;

  • lateinit 不能对可空类型使用

具体来讲,这个关键字告诉编译器,我无法声明的时候就初始化,但是我保证我在使用前一定会初始化,你就别给我检查了

lateinit var a1: String

lazy也是延迟初始化,只能修饰val, 

  • lazy 的加载时机为第一次调用常量的时候,且只会加载一次(毕竟是个常量,只能赋值一次)

val lazyValue: String by lazy { println("computed!") "Hello" }

{}中的最后一行代码,需要返回初始化的结果,上述代码中,"Hello"即为最后初始化的值。

private val mUserMannager: UserMannager by lazy { UserMannager.getInstance() }

let 

let扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内,let函数的是一个不错的选择;let函数另一个作用就是可以避免写一些判断null的操作。

object.let{
   it.todo()//在函数体内使用it替代object对象去访问其公有的属性和方法
   ...
}

//另一种用途 判断object为null的操作
object?.let{//表示object不为null的条件下,才会去执行let函数体
   it.todo()
}
Kotlin系列之let、with、run、apply、also函数的使用_熊喵先生的博客-CSDN博客_kotlin let函数

::

Kotlin 中 双冒号操作符 表示把一个方法当做一个参数,传递到另一个方法中进行使用,通俗的来讲就是引用一个方法。
详情参考:https://blog.csdn.net/lv_fq/article/details/72869124 

object关键字总结

object关键字主要有三种使用场景

  • 对象声明(object declaration)  一般 用于单例
  • 伴生对象(companion object) 相当于static 与companion一起用
  • 对象表达式(object expression)  相当于一个new 
  • https://www.jianshu.com/p/1a0cf2ca87cc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值