迹忆客 专注技术分享

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

Kotlin 中 is 运算符 与 as 运算符之间的区别

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

本文介绍 Kotlin 中 is 和 as 运算符的区别。 虽然这些运算符的使用看起来相似,但它们是不同的。


Kotlin is 运算符

Kotlin is 运算符用于类型检查。 假设我们在一个接口中有多个具有不同变量的类,并且我们希望在不同的方法中互换使用公共变量。

在这种情况下,我们将不得不检查两种方法所需参数的数据类型是否相似。 如果数据类型不相似,代码将抛出错误。

例如,如果一个方法需要一个数据类型为 String 的参数,我们需要检查我们传递的变量的数据类型。 Kotlin is operator 允许我们这样做。

它返回一个布尔值,如果 is 运算符的两个操作数具有相同的数据类型,则返回 true。 否则,它返回 false。

Kotlin is 运算符是一个类型检查运算符。 因此,我们可以使用它来检查变量的数据类型是否是我们认为的那样。

代码示例:

fun main(args: Array<String>) {
    var s: Any = "Hey, this is Kotlin programming!"
    val r = s is String
    println("The variable s is a String: " + r)
}

输出:

The variable s is a String: true

Kotlin 的 is 运算符等同于 Java 的 instanceof 运算符。 因此,我们可以用它来检查一个类的对象。

代码示例:

class exampleClass {

    var v: String = "Kotlin Programming!"

    fun exampleFunc() {
        println("Official Android language is - " + v)
    }

}
fun main(args: Array<String>) {

    val obj = exampleClass() // Creating an object
    obj.exampleFunc()
    val result = obj is exampleClass // Using the Kotlin is operator
    println("The object obj is an instance of the class exampleClass: " + result)

}

输出:

Official Android language is - Kotlin Programming!
The object obj is an instance of the class exampleClass: true

Kotlin as 运算符

Kotlin as 运算符用于显式类型转换。 Kotlin as 不是运行时安全运算符。

如果我们不小心传递了错误的对象,as 运算符将导致错误。 因此,始终建议使用 Kotlin 的安全转换运算符 as?。

as? 如果可能,运算符将返回转换后的值。 否则,它将返回空值。

使用 Unsafe Cast Operator 作为

在我们传递一个可以转换为目标类型的操作数之前,不安全的转换运算符 as 将正常工作。

代码示例:

fun main(args: Array<String>){
    val s: String = "Convertible"
    val s1: String = s as String
    println(s1)
}
Convertible

但是当我们尝试转换一些与目标类型不兼容的东西时,它就会抛出错误。

代码示例:

fun main(args: Array<String>){
    val s: String = 18
    val s1: String = s as String
    println(s1)
}

Error 输出:

Using unsafe cast operator throws error

安全铸造运营商作为? 最好避免错误。

使用 Safe Cast Operator As?

如前所述,安全转换运算符在无法进行类型转换时将返回 null。

fun main(args: Array<String>){

    var s: Any = "Kotlin"
    var s1 = 18
    // Returns null when casting is not possible
    val s2: String? = s1 as? String
    println(s2)

}

输出:

null

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

本文地址:

相关文章

Kotlin 中 Java String[] 的等价物

发布时间:2023/05/13 浏览次数:59 分类:Java

本文介绍了 Kotlin 中 Java String[] 的等价物。 我们将看到所有可能的方法来为 Kotlin 实现与 Java 中的 String[] 相同的结果。

将 Java 文件代码转换为 Kotlin

发布时间:2023/05/13 浏览次数:142 分类:Java

Kotlin 现在是一种官方的 Android 语言。 因此,您可能希望将 Java 文件更改为 Kotlin。 本文教您如何将 Java 转换为 Kotlin。

在 Kotlin 中使用 forEach

发布时间:2023/05/13 浏览次数:122 分类:Java

本文介绍 Kotlin 中 forEach 关键字的概念和使用。 我们将看到一些使用 Kotlin forEach 循环的示例来理解它。

在 Kotlin 中使用 reified 关键字

发布时间:2023/05/13 浏览次数:197 分类:Java

reified 关键字是在 Kotlin 中使用泛型时最常使用的编程概念。在本教程中,我们将学习如何使用两种方法解决此问题,包括将类型的类作为泛型函数的参数传递,以及将 reified 关键字与内联函数

Kotlin 中 ! 和 ? 运算符之间的区别

发布时间:2023/05/13 浏览次数:180 分类:Java

在 Kotlin 中,断言运算符 !! 和安全调用符 ? 使用 Null 安全。本文介绍空安全的概念。 我们也将通过如何! 和 ? 在 Kotlin 中有助于空安全。

在 Kotlin 中实现 floor 模函数

发布时间:2023/05/13 浏览次数:161 分类:Java

在本教程中,我们将学习如何创建一个自定义函数,以使用满足开发人员要求的任何参数来计算此数字与另一个数字的 floor 除法的余数。

在 Kotlin 中继承具有多个构造函数的类

发布时间:2023/05/12 浏览次数:200 分类:Java

本文讨论如何扩展具有多个构造函数的类。 构造函数是在创建对象时调用的函数,用于初始化类变量。在 Kotlin 中扩展具有多个构造函数的类

Kotlin中栈数据结构的使用

发布时间:2023/05/12 浏览次数:130 分类:Java

本篇文章我们就来学习一下Kotlin中栈的使用。 我们还将看到用于更新和更改 Kotlin 堆栈的标准函数,包括 push、pop、peek、search 和 isEmpty。我们还将研究比 Kotlin 中的堆栈更好的替代方案。

Kotlin中findViewById函数的使用

发布时间:2023/05/12 浏览次数:183 分类:Java

Kotlin 中的 findViewById 允许在 ID 的帮助下查看和更新视图。 本文介绍了 Kotlin 中 findViewById 函数的使用。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便