JAVA空安全_Kotlin学习快速入门(5)——空安全

介绍

kotlin中,对象可分为两种类型,可为空的对象和不可为空对象

默认为不可为空对象,代码检测如果发现不可为空对象赋予了null,则会标红报错。

可为空的对象,如果调用了方法,代码检测也会标红报错

var s: String = "hello" //不可为空

s = null//标红报错

var s: String? = "hello"

s=null //代码检测通过

println(s.length)//标红报错

调用可为空对象的属性或方法

这样的好处就是,如果我们有一个对象一定是不为空的,那么我们可以直接调用它的方法而不会出现空指针错误。

但如果我们需要调用一个可为空的对象的属性,怎么做呢?

上面我们知道,如果一个可为空的对象调用方法,代码检测会标红报错,所以,kotlin中就提供了几个方法供我们调用可为空对象的属性或方法

1. 使用判空条件 if(xx !=null)

var s: String? = "hello"

if(s!=null){

println(s.length)

}

2. 使用安全调用 ?.

使用?.,如果对象为空,则会得到null,但程序不会停止

支持链式调用,当某处对象为空,则返回null

var s: String? = "hello"

println(s?.length) //s为空,则返回null,否则返回s.length

println(s?.length+1) //这里代码检测会报错

println(s?.length?.plus(1)) //修改之后的,通过代码检测

3. Elvis操作符 ?:

val date = 表达式1 ?: 表达式2

如果表达式1为null,则返回表达式2返回的内容

val l: Int = if (b != null) b.length else -1

//相当于上面的代码

//如果b为空,则返回l=-1,b不为空,l=b.length

val l = b?.length ?: -1

4. !!

对象为空,编译通过(代码提示不报错),但运行时候抛出空指针异常

var s: String = null

pritnln(s!!.length) //运行时候回报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值