Kotlin中变量、常量以及空安全

Kotlin的可空类型

在以往的Java开发中有一个著名的异常NullPointerException,俗称NPE,它由访问为空的属性引发,为此Kotlin中引入了可空类型,旨在有效消除NPE异常的发生。

在定义变量的时候在其类型的后面加上一个?问号表示该变量是可空类型,可以赋予其null值。比如

//定义可空变量,并赋予null值
var a: String?
a = null
    
//定义一个非空变量,赋予null值的发生错误
var b: String
b = null // Null can not be a value of a non-null type String

可空类型的特点

  • 可空类型变量可以存放null值。
  • 可空类型变量不能赋值为不可空变量,包括非空类型的形参
  • 不能直接调用可空类型的方法和属性

安全调用可空类型: ?.

创建一个var a: String? = "abc"创建了一个可空的字符串类型变量a
那么调用变量a的方法前需要判断其是否为null,比如使用if…else判断
println(if(a != null) a.toUpperCase() else a)

在Kotlin中提供了一个非常方便的语法糖,可以将上面的if…else语句,使用?.
比如println(a?.toUpperCase())

Elvis运算符:?:

看一个Elvis运算符的例子:

//定义一个字符串变量a,如果不为空输出其值,如果为空输出“aa”
var a: String? = "a"
val b = "aa"
println(a?:b) //输出为a
a = null
println(a?:b) //输出为aa

通过上面的例子可以看出Elvis运算符的函数就是当变量a不为空,表达式的值就是a,如果为空表达式的值就是b

非空断言:!! 操作符

可空类型的变量不能直接调用,一般要么进行if…else判断,要么使用?.操作符进行安全调用,除此以外
Kotlin中提供了!!操作符,将一切可空的值转换为不可空的值,从而直接调用变量的方法和属性,
如果可控变量的值为null,将发生NPE异常。

参考

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值