当前位置: 首页 > 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)
}

在这里插入图片描述

相关文章:

  • FastMCP - 官方文档翻译
  • 《Spring 中 @Autowired 注解详解》
  • Manus AI: 冲破次元壁,让手写文字跨越语言鸿沟
  • 深度学习入门(五):学习相关的技巧
  • 蓝桥杯 18. 积木
  • 基于yolov11的打电话玩手机检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • 防止交叉验证中的数据泄露:提升模型在实际环境中的性能
  • React状态管理
  • 攻防世界-php伪协议和文件包含
  • 先滤波再降采样 还是 先降采样再滤波
  • JavaSE核心知识点01基础语法01-02(基本数据类型、运算符、运算符优先级)
  • 国产海光DCU及超算平台深度解析
  • Vue项目安全实践指南:从输入验证到状态管理的全方位防护
  • 笔记本电脑升级计划(2017———2025)
  • Springclound常用五大组件及其使用原理
  • [人机交互]理解与概念化交互
  • ARM介绍及其体系结构
  • Linux55yum源配置、本机yum源备份,本机yum源配置,网络Yum源配置,自建yum源仓库
  • SpringMVC 框架核心知识点详解与实战
  • 哈希算法、搜索算法与二分查找算法在 C# 中的实现与应用
  • 马上评|演出服“穿过就退货”的闹剧不该一再重演
  • 李云泽:小微企业融资协调工作机制已发放贷款12.6万亿元
  • 山东滕州一车辆撞向公交站台撞倒多人,肇事者被控制,案件已移交刑警
  • 2025五一档电影票房破7亿
  • 长三角铁路今日预计发送386万人次,沪宁、沪杭等方向尚有余票
  • 刘翔的赛会纪录被改写,田径钻石赛在赛场内外交出精彩答卷