迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 Kotlin 中实现空值检查

作者:迹忆客 最近更新:2023/03/21 浏览次数:

一些原始类型不接受 null 并抛出错误。null 引用产生的错误可能导致应用程序失败,甚至导致系统崩溃;因此,在运行程序之前检查 null 引用至关重要。

Kotlin 允许我们以各种方式检查 null。本文将教你如何在 Kotlin 中检查 null 并防止出现 NullPointerException 错误。

在 Kotlin 中使用条件语句实现 Null 检查

在 Kotlin 中检查 null 的最简单方法是使用条件语句。在这里,我们可以使用条件运算符 ==!= 并相应地执行条件语句。

我们也可以使用 === 代替 ==!== 代替!=。结构等式 x == null 无论如何都被翻译成指称等式 x === null;因此,使用 == 还是 === 并没有太大区别。

这是一个示例,展示了在 Kotlin 中使用条件语句进行 null 检查。

fun main() {
    val x: String? = "Android"
    if (x != null && x.length > 0) {
        print("This is not null, its length is: ${x.length}")
    } else {
        print("This is a null string!")
    }
}

输出:

使用条件语句进行 Kotlin 空值检查

现在,如果我们将值更改为 null,它将给出另一个输出。

fun main() {
    val x: String? = null
    if (x != null && x.length > 0) {
        print("This is not null, its length is: ${x.length}")
    } else {
        print("This is a null string!")
    }
}

输出:

在 Kotlin 中使用条件语句检查 Null

仅当使用 val 关键字声明变量时,条件语句才有效。val 关键字使单词不可变。

如果我们使用 var 变量,则在检查 null 引用后变量的值可能会发生变化。

在 Kotlin 中使用安全调用实现 Null 检查

安全调用是访问 Kotlin 中 null 检查的可空属性的另一个选项。我们可以使用安全呼叫运算符 ?. 检查表达式的结果。

根据表达式结果,我们可以执行进一步的语句。

这是一个例子。

fun main() {
    val v = "Android"
    val x: String? = null
    println(v?.length)
    println(x?.length)
}

输出:

使用安全调用进行 Kotlin 空值检查

安全调用在创建链时特别有用。例如,我们可以写:

a?.b?.c?.d

在上面的例子中,如果 a 不是 null,它将移动到 b。如果 b 不是 null,它将移动到 c,如果 c 不是 null,它将移动到 d

每当编译器发现一个 null 值时,它就会停止执行并返回 null

使用带有 let 函数的安全调用来处理 Kotlin 中的 Null

通常,如果列表的值之一是 null,编译器会返回 null。但是,我们可以将 let 函数与安全调用结合起来,以仅对列表的非 null 值起作用。

例子:

fun main() {
    val myList: List<String?> = listOf("David", "Virat", "Steve", null)
    for (i in myList) {
        i?.let { println(it) } // prints only non-null values
    }
}

输出:

将 let 函数与安全调用一起用于 Kotlin Null 检查

使用 Elvis 运算符在 Kotlin 中实现 Null 检查

Kotlin null 检查的另一个绝佳选择是使用 Elvis 运算符 ?:。如果在引用中找到 null 值,它将返回非 null 或默认值。

有两个表达式:在 Elvis 运算符的左侧和右侧。如果左侧表达式的值不为 null,则运算符返回该值,但如果左侧表达式为 null,则 Elvis 运算符返回右侧表达式的值。

这里的关键是 Elvis 运算符仅在左侧表达式为 null 时才会执行右侧的表达式。

例子:

fun main(args: Array<String>) {
    val i: String? = null
    val j: String = i ?: "Welcome! This is Kotlin Programming."
    // This print statement uses the Elvis operator
    println(i ?: j)
}

输出:

使用 Elvis 运算符进行 Kotlin 空值检查

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便