Kotlin空安全原理

前沿
可能又要闲置一段时间了,闲置的原因长的不知道从何说起,收拾收拾心情,整理下博客,不卑不亢,静下心来,梳理下知识点,写写博客记录下,就当是给自己放假啦,浮躁的人得静下心来,能力不够学习来凑!

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!=<
Kotlin是一种现代化的编程语言,它与Java具有很好的兼容性。Kotlin的兼容原理主要包括以下几个方面: 1. Kotlin与Java代码互操作:Kotlin可以与Java代码无缝地进行互操作。这意味着你可以在Kotlin代码中调用Java类和方法,也可以在Java代码中调用Kotlin类和方法。Kotlin编译器会将Kotlin代码转换为与Java兼容的字节码,使得Kotlin代码可以在Java虚拟机(JVM)上运行。 2. Kotlin标准库:Kotlin提供了一个丰富的标准库,其中包含了许多与Java标准库相似的功能。这使得Kotlin开发者可以方便地使用Java标准库中的类和方法,同时也可以使用Kotlin特有的扩展函数和其他功能。 3. Null安全性:Kotlin引入了空安全性的概念,可以在编译时捕获可能导致空指针异常的问题。这对于与Java代码的兼容性非常重要,因为Java中的对象可以为null,而Kotlin中的对象默认是非空的。Kotlin使用可空类型和安全调用操作符来处理可能为空的值。 4. Java框架和库的支持:Kotlin可以与许多流行的Java框架和库无缝集成,如Spring、Hibernate、Android等。Kotlin提供了一些特性和语法糖,使得与这些框架和库的使用更加简洁和安全。 5. 扩展函数和属性:Kotlin引入了扩展函数和属性的概念,可以为已有的Java类添加新的函数和属性。这使得Kotlin代码可以更加灵活地与Java代码进行互操作,而无需修改Java类的源代码。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值