首页 > 其他分享 >【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )

【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )

时间:2023-01-28 12:02:20浏览次数:67  
标签:count main 非空 调用 name Kotlin 判空 操作符 null


文章目录

  • ​​一、非空断言操作符 !!​​
  • ​​二、使用 if 语句判空​​






一、非空断言操作符 !!



Kotlin 中的 可空类型 变量 , 在运行时 可以选择 不启用 安全调用 操作 ,

在调用 可空类型 变量 成员 与 方法 时 , 使用 非空断言操作符 ​​!!​​ ,

如果 可空类型 变量为 空 , 则 直接抛出 空指针异常 ​​KotlinNullPointerException​​ ;



代码示例 : 在下面的代码中 , ​​name​​​ 变量是 ​​String?​​ 可空类型 ,

变量值为 ​​null​​ ,

如果使用 ​​name?.count()​​​ 的方式调用 , 则会先判定 ​​name​​ 是否为空 , 如果为空则该代码不会执行 ,

如果使用 ​​name!!.count()​​​ 的方式调用 , 不会判定 ​​name​​ 是否为空 ,

如果 为空 抛出 ​​KotlinNullPointerException​​ 异常 ;

fun main() {
var name: String? = null
println(name!!.count())
}

执行结果 :

Exception in thread "main" kotlin.KotlinNullPointerException
at HelloKt.main(Hello.kt:3)
at HelloKt.main(Hello.kt)

【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )_空安全






二、使用 if 语句判空



在 Kotlin 中 , 对于 可空类型 变量的调用 , 除了使用

  • 空安全调用操作符 ​​?​
  • 非空断言操作符 ​​!!​

之外 , 还可以使用 Java 语言中的传统判空方式 ,

即 ​​if​​​ 语句判断 变量 是否为 ​​null​​ ;



空安全调用操作符 ? 与 使用 if 语句判空操作 对比 :

  • 空安全调用操作符 更加 灵活 , 简洁 ;
  • 空安全调用操作符 可以进行 链式调用 ;

二者的效果是等价的 ;



代码示例 1 : 下面的代码是 使用 if 语句判空

fun main() {
var name: String? = null
var count: Int? = null
if(name != null) {
count = name.count()
}
println(count)
}

执行结果 :

null

【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )_非空断言操作符_02



代码示例 2 : 下面的代码 与 代码示例 1 的 效果是等价的 , 显然本代码更加简洁 ;

fun main() {
var name: String? = null
var count: Int? = name?.count()
println(count)
}

执行结果 :

null

【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )_android_03


标签:count,main,非空,调用,name,Kotlin,判空,操作符,null
From: https://blog.51cto.com/u_14202100/6024908

相关文章

  • 【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声
    文章目录​​一、Kotlin的空安全机制​​​​二、变量可空性​​​​1、默认变量不可赋空值​​​​2、声明可空类型变量​​一、Kotlin的空安全机制Java中的空指针问题......
  • 【Kotlin】官网学习笔记
     1、基础语法BasicSyntax地址:https://kotlinlang.org/docs/basic-syntax.html一、方法与变量可以直接编写main方法执行funmain(){println("Helloworld!")......
  • IDEA:自动生成方法注释并添加 @param 参数(Java+Kotlin)
    在用 Java 或 Kotlin 编写方法时建议编写完善的注释,包含每个参数的意义和返回的内容,下面介绍在 IDEA 中自动生成方法注释的技巧。    第二张图按照图片填写......
  • Kotlin与Java的抉择。
    某种意义上来说,的确是应该切换到Kotlin了。只是,你们要清楚,这是一门基于虚拟机的编程语言。我刚刚大概去看了一下kotlin关于Native的说明。Kotlin/Nativeisatechnologyfo......
  • Kotlin 空指针检查
    可空类型系统Kotlin利用编译时判空检查的机制几乎杜绝了空指针异常。虽然编译时判空检查的机制有时候会导致代码变得比较难写,但是不用担心,Kotlin提供了一系列的辅助工具,让......
  • Kotlin Lambda编程
    许多现代高级编程语言在很早之前就开始支持Lambda编程了,但是Java却直到JDK1.8之后才加入了Lambda编程的语法支持。而Kotlin从第一个版本开始就支持了Lambda编程,并且Kotli......
  • Kotlin 变量和函数
    编程之本:变量和函数变量Kotlin中定义一个变量,只允许在变量前声明两种关键字:val和var。val(value的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新......
  • Kotlin 逻辑控制
    程序的逻辑控制 if条件语句Kotlin中的if语句相比于Java有一个额外的功能,它是可以有返回值的,返回值就是if语句每一个条件中最后一行代码的返回值。funlargerNumber(nu......
  • 为什么我放弃Java,选择Kotlin(靠特灵)?
    今天查了一下,竟然发现Oracle的JDK听说是收费了。也就是说,你要用于生产环境的话,Oracle一旦查到你,你就要交钱的。我本身是个穷光蛋,哪还有钱交给Oracle。为了避免繁琐的法律制......
  • kotlin语法
    apply:于不返回值且主要在接收者(this)对象的成员上运行的代码块使用 apply。apply 的常见情况是对象配置。这样的调用可以理解为“将以下赋值操作应用于对象”。also上......