前沿
可能又要闲置一段时间了,闲置的原因长的不知道从何说起,收拾收拾心情,整理下博客,不卑不亢,静下心来,梳理下知识点,写写博客记录下,就当是给自己放假啦,浮躁的人得静下心来,能力不够学习来凑!
kotlin空安全
被面试官问到kotlin空安全的原理,瞬间触碰到盲区了,自己用过kotlin也知道kotlin空安全的用法以及优点,就是没有想过它的原理是什么,然后卒。
回去特意查了下,kotlin对空字符串以及null的判断要比Java友好的多,相比较Java的TextUtils.isEmpty()方法,我们看看kotlin的校验空字符串的几个方法:
- isNullOrEmpty: 为空指针或者字符串长度为0时返回true,非空字符串和可空字符串都可以调用。
- isNullOrBlank: 为空指针、字符串长度为0或者全为空格时候返回true,非空字符串和可空字符串都可以调用。
- isEmpty: 字符串长度为0时返回true,只有非空字符串的时候才可以调用。
- isBlanK: 字符串长度为0或者全为空格时返回true,只有非空字符串才可以调用
- isNotEmpty: 字符串长度大于0时返回true,只有非空字符串可以调用。
- isNotBlank: 字符串长度大于0且不是全空格时返回true,只有非空字符串可以调用
定义可变变量
从上面的定义可以看出来,kotlin判断空值的时候要区分空串和非空字符串的,这是由于Kotlin的空安全概念,每个变量都可以定位为可以是空和不可以为空这两种。
定义可为空变量
private var name:String?=null
定义不可为空变量
private var age = "18"
从这里好像看不出来有什么不同,接下来我们分别获取他们的长度:
//定义可为空变量
val nameLength = name?.length
val nameLength02 =name?.length?:0
val nameLength01 = name!!.length
//定义不为空变量
val ageLength=age.length
可以看到当不可以为空时,直接获取长度,而可为空时kotlin有几种比较常用的写法
第一种
val nameLength = name?.length
//类似Java
if(nameLength!=<