kotlin 中的布尔

1、kotlin中内置的Boolean类型,可以有true与false两个值的布尔对象。

布尔值的内置运算有(跟很多语言如java、js一摸一样):

  • ||------逻辑
  • &&------逻辑
  • !------逻辑
Kotlin 复制代码
fun main() {
    val a: Boolean = true
    val b: Boolean = false
    val c: Boolean? = null

    println(a || b) // true (只要一个为真则为真,所以输出true)
    println(a && b) // false (只要一个为假则为假,所以输出false)
    println(c) // 也可以为null
}

2、Boolean类型与数字类型一样也可空

Kotlin 复制代码
fun main() {
    val a: Boolean? = true
    val b: Boolean? = true

    println(a === b) // true 
}

上边代码为什么返回true?不是有装箱?

解释:

在 Kotlin 中,=== 操作符用于比较两个对象的引用是否相同,即它们是否指向内存中的同一个对象。而对于基本数据类型(如 BooleanIntDouble 等)及其对应的非空类型,情况稍微特殊一些。

上边代码,ab 都是 Boolean? 类型,即它们可以是 Boolean 的值或者 null。当你直接赋值为 truefalse 时,Kotlin 会对这些字面值进行优化,不会进行装箱操作。这意味着,对于 truefalse,Kotlin 会复用已经存在的单例对象,而不是为每次赋值都创建一个新的对象。

因此,当你使用 === 比较 ab 时,结果为 true,这是因为它们都指向了代表 true 的同一个 Boolean 对象。

相关推荐
SKY -dada9 小时前
Understand 使用教程
开发语言·c#·流程图·软件构建·敏捷流程·代码复审·源代码管理
xxjj998a9 小时前
Laravel3.x:奠定现代PHP框架的重要里程碑
android·开发语言·php
千码君20169 小时前
flutter: 分享一下基于trae cn 构建的过程
java·vscode·flutter·kotlin·trae
(Charon)9 小时前
【C++/Qt】Qt 实现 MQTT 测试工具:连接 Broker、订阅主题与发布消息
开发语言·c++·qt
Ulyanov9 小时前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》:动态数据仪表盘与 NumPy 可视化 —— 从标量到向量的数据驱动进化
开发语言·python·qt·架构·numpy
小短腿的代码世界9 小时前
Qt序列化与持久化深度解析:从QDataStream到自定义二进制协议
开发语言·数据库·qt
周末也要写八哥10 小时前
Golang语言与Rust语言的对比
开发语言·后端·golang
楼田莉子10 小时前
Linux网络:数据链路层
linux·服务器·开发语言·网络·c++·后端
不甘先生10 小时前
Go 四层架构实战:Handler + Service + Repository + Entity(清晰、可控、可演进)
开发语言·架构·golang
Yang-Never10 小时前
Git -> Git Worktree 工作树
android·开发语言·git·android studio