[转]Kotlin 空(NULL)检测机制

0 原文

https://www.runoob.com/kotlin/kotlin-basic-syntax.html

感觉这是 kotlin 的火星符号

Kotlin 空(NULL)检测机制,类似火星符号 ? !!

Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理。

1. 类型后面加?表示可为空

正常的案例

    var a: String? = null
    if (a == null) {
        println("a is null")
    } else {
        println(a)
    }

运行结果:

a is null

错误的案例

var a: String = null

在编译的时候就会不过

Null can not be a value of a non-null type String

2. 变量后面加!!,可抛出控指针异常

fun main(args : Array<String>) {
    val  age = null
    val ageInt = age!!.toInt()
    println(ageInt)
}

运行效果

Exception in thread "main" kotlin.KotlinNullPointerException
	at com.tct.freeze.kotlinstudydemo.MainRunKt.main(MainRun.kt:5)

3. 变量后面加?,不做处理返回 null

fun main(args : Array<String>) {
    val  age = null
    val ageInt = age?.toInt()
    println(ageInt)
}

运行结果

null

4. 返回值后面加?:,为空时返回

fun main(args : Array<String>) {
    val  age = null
    val ageInt = age?.toInt() ?:-1
    println(ageInt)
}

运行结果

-1

5. 当一个引用可能为 null 值时, 对应的类型声明必须明确地标记为可为 null

fun parseInt(str: String): Int? {
  // ...
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值