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

导读:本篇文章讲解 Kotlin从零到精通—-第三章控制语句(2),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、空空全

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来效验或判断变量是否位于某数组或容器中

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

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

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119179.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!