💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 1. ? 空值处理 在`Kotlin`中赋予了比较方便的空值处理,即`?`。可以在数据声明的时候定义一个可空的变量,比如: ~~~ fun main() { var a: Int // 非空变量 var b: String? // 可空变量 a = null // Null can not be a value of a non-null type Int b = null } ~~~ 不能将`a`赋值为`null`,否则编译无法通过。 # 2. ?. 安全调用符 `Kotlin`提供了一个安全调用符“`?.`”,专门用于调用可空类型变量中的成员方法或属性,其语法格式为“`变量?.成员`”。其作用是判断变量是否为`null`,如果不为`null`才调用变量的成员方法或者属性。比如下面的案例: ~~~ fun main() { var b: String? = null // 可空变量 println(b?.substring(2)) // null b = "abc" println(b?.substring(2)) // c } ~~~ ## 3. ?: 空合并操作符 可以在判断“`变量?.成员`”的时候指定一个默认值,比如下面的案例: ~~~ fun main() { var b: String? = null // 可空变量 println(b?.substring(2) ?: "abc") // abc } ~~~ 其实这种写法有些类似于`Java`中的三目运算符。 ## 4. !!. 非空断言 语法结构为“`变量!!.成员`”,也就是类似`Java`中的`assert`进行断言,如果不满足条件就会返回一个异常。比如下面的案例: ~~~ fun main() { var b: String? = null // 可空变量 println(b!!.substring(2)) // abc } ~~~ 结果: ``` Exception in thread "main" kotlin.KotlinNullPointerException at com.kotlinLearn.KotlinDemoKt.main(KotlinDemo.kt:5) at com.kotlinLearn.KotlinDemoKt.main(KotlinDemo.kt) ```