Kotlin从零到精通----第三章控制语句(2)

一、空空全

1.字符串的有效性判断

在以往的开发中工作中也不了和各种异常作斗争,常见的异常包括空指针异常(NullPointerException)、数组越界异常(IndexOutOfBoundsException)、类型转换异常(ClassCastException)等,其中最让人头痛的当数空指针异常,该异常频繁发生却又隐藏很深。

在Java中常见的字符串非空判断是的示例代码:

if(str != null && str.length() > 0 && str.trim().length() >0 ){

... ...

}

从上述代码中可以看出,非空代码的语句有点长,一次开发者必须会把被多次调用的代码封装成工具类。既然这样想,Android系统的研发工程师也不例外,所以安卓的SDK已经提供“TextUtils.isEmpty(***)”这个公共方法,专门用于效验某个字符串是否为空值。Kotlin的研发人员当然也不会放过这点,Kotlin通过isNUllOrBlank函数对字符串进行空值效验。

下面是Kotlin效验字符串空值的几个方法?

(1)isNullOrEmpty:为空指针或者字符串长度为0时返回true ,非空串与可空串均可调佣

(2)isNullOrBlank:为空指针、子串长度为0或者全为空格时返回true,非空串与可空串均可调用

(3)isEmpty:子串长度为0时返回true,只有非空串可调用

(4)isBlank:子串长度为0或者全为空格时返回true,只有非空串可调用

(5)isNotEmpty:子串长度大于0时返回true,只有非空串可调用

(6)isNotBlank:子串长度大于0且不是全空格串时返回true,只有非空串可调用

2.声明可空变量

var strA: String = "声明的非空变量"
var strB: String? = null //声明空变量
var strC: String? = "声明可空变量"
lateinit var StrD: String //延迟初始化

3.效验空值的运算符

在Kotlin中我们引入另一种运算符“!!”,表示甭管那么多,强行把变量从可空类型转化为非空类型,从而避免变量是否非空的效验。但是既然运算符“!!”强行放弃非空判断,开发者就得自己主要提前非空判断了,要不然也会空指针异常。

总结一下,Kotlin引入空安全的概念,并在编译时开展变量是否为空的效验。先关的操作符说明概括如下:

(1)声明变量实例时,在类型名称后面加问号,表示该变量可以为空

(2)调用变量方法时,在变量名称后面加问号,表示一旦变量为空就返回null

(3)新引入运算符“?:”,表示一旦变量为空,就返回该运算符右边的表达式

(4)新引入运算符“!!”,通知编译器不做非空效验,如果运行时发现变量为空,就抛出异常。

二、等式判断

简介:等式是编程语言基本的表达式之一,无论哪种高级语言,无一例外都采用双等号“==”判断两个变量是否相等,就算是复杂的判断,在Java中可以通过“equals”函数判断两个变量是否相等。

1.结构相等

基本数据类型如整型、长整型、浮点型、双精度、布尔型等无论在C/C++还是在Java或在Kotlin中,都使用双等号“==”进行两个变量相等性的判断。

字符串等值性的Java与Kotlin判断方式对照关系

字符串的等值性判断要求Java的判断方式Kotlin的判断方式
判断两个字符串是否相等strA.equals(strB)strA == strB
判断两个字符串是否不等!strA.equals(strB)strA != strB

推而广之,不单单字符串String类型,凡是Java中实现equals函数的类,其变量均可以在Kotlin中通过运算符“==”和“!=”进行等式判断。这种不比较存储地址,而是比较变量结构内部值的行为,Kotlin称之为结构相等,即模样相等,通俗地说就是一模一样。

2.引用相等

除了值相等以外,还要求引用地址也必须相等,使用运算符三个等号“===”或引用不等的运算符“!==”。

(1)对于基本数据类型,包括整型、浮点型、布尔型、字符串等,结构相等和引用相等没有区别

(2)同一个类声明的不同变量,只要有一个属性不相等,则其即是结构不等,也是引用不等

(3)同一个类声明的不同变量,若equals方法效验的每个属性都相等(譬如通过clone方法克隆而来的变量复制品),则其结构相等,但引用不等。

3.is和in

(1)使用is来效验变量是否为某种类型(反之!is)

(2)使用in来效验或判断变量是否位于某数组或容器中

最后是交流公众号,大家可以关注一下

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yyxhzdm

你的鼓励是我创作的最大动力!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值