当前位置: 首页 > news >正文

Kotlin-空值和空类型

变量除了能引用一个具体的值之外,还有一种特殊的值,那就是 null, 它代表空值, 也就是不引用任何对象

在Kotlin中, 对空值的处理是非常严格的,正常情况下,我们的变量是不能直接赋值为 null 的,否则无法编译通过, 这直接在编译阶段就避免了空指针问题

在这里插入图片描述
Kotlin中所有的类型默认都是非空类型。如果我们希望某个变量在初始情况下使用 null 而不去引用某一个具体对象, 此时就需要将变量的类型修改为可空类型,只需要在类型名称的后面添加一个?即可:

fun main() {var str: String? = null
}

既然现在是可空类型,那么当一个变量为null时,这时候使用类的一些成员方法或是获取成员属性时, 会出现一些问题:

在这里插入图片描述
此时为了安全,就需要对变量进行判断

fun main() {var str: String? = nullif (str != null) {println(str.length)}
}

不过有些情况下,我们已经非常清楚一定不为null。即便它是一个可空类型的变量,也要调用成员方法或是获取成员属性

fun main() {var str: String? = null// 使用非空断言操作符 !!. 来明确不会出现 null 问题println(str!!.length)
}

在这里插入图片描述

虽然使用非空断言操作符能够进行强制操作,但是这样实际上并不安全

Kotlin为我们提供了一种更为安全的空类型操作,更安全地访问可能包含null值的对象,也就是安全调用运算符?.

fun main() {var str: String? = nullprintln(str?.length)
}

在这里插入图片描述

fun main() {var str: String? = "abc"println(str?.length)
}

在这里插入图片描述
有时候我们希望如果变量为null,在使用安全调用运算符时,返回一个我们自定义的结果,而不是null。这时候我们可以使用 Elvis运算符?:

  • 左侧为null,返回右侧自定义的值
  • 左侧不为null,返回左边
fun main() {val str: String? = nullval len = str?.length ?: 0println(len)
}

在这里插入图片描述

fun main() {val str: String? = "abc"val len = str?.length ?: 0println(len)
}

在这里插入图片描述

http://www.xdnf.cn/news/292627.html

相关文章:

  • 【AI提示词】SCAMPER法专家
  • 【最新Python包管理工具UV的介绍和安装】
  • SIFT算法详细原理与应用
  • 嵌入式模数转换原理与程序设计
  • 新型深度神经网络架构:ENet模型
  • 《 深入探索移位操作符:从原理到应用》
  • ESP-ADF battery_service组件之voltage_monitor子模块详解
  • 分析rand()和srand()函数的功能
  • 【机器学习-线性回归-5】多元线性回归:概念、原理与实现详解
  • Android控件VideoView用法
  • 工业主义与民主的兴衰:历史逻辑与未来危机
  • 三种石墨烯(Graphene)拉伸模拟方法对比
  • 偷钱包行为检测数据集VOC+YOLO格式922张1类别有增强
  • 密钥管理系统:数据库加密的隐形守护者与安当KSP+TDE创新实践
  • ecat总线6000段定义
  • 关闭ollama开机自启动
  • C语言数据在内存中的存储详解
  • Manus AI: 冲破次元壁,让手写文字跨越语言鸿沟
  • ByteArrayInputStream 类详解
  • 【Hive入门】Hive安全管理与权限控制:用户认证与权限管理深度解析
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的流量变现路径创新研究
  • Webug4.0靶场通关笔记15- 第19关文件上传(畸形文件)
  • 《进制转换的终极指南:原理、方法与编程应用》
  • ModuleNotFoundError: No module named ‘triton‘
  • 前端学习基础—VScode环境配置及html基础知识
  • LintCode第766题,LintCode第1141题,LintCode第478题
  • 图片批量处理JPGC 深度测评:智能压缩 + 多线程加速
  • 了解巴纳姆效应
  • 11. 多线程(8) --- 案例:阻塞式队列
  • “Copy-On-Write” (COW)