Kotlin中的可空类型
在 Kotlin 中,可空类型是一项重要的特性,它允许我们声明变量可以为空。在本篇博客中,我们将介绍 Kotlin 中的可空类型,并提供示例代码演示如何处理可空变量、使用安全调用操作符(?.)、Elvis 运算符(?:)以及非空断言(!!.)。
首先,让我们来看一下如何声明可空类型变量。在 Kotlin 中,我们可以使用 ? 将变量的类型标记为可空类型。例如:
var telephone: String? = null // 可空变量
在上述示例中,telephone 是一个可空类型的变量,它可以存储一个 String 值或者 null。
接下来,我们将演示如何处理可空变量。使用安全调用操作符 ?. 可以简化访问可空变量的成员方法或属性。示例如下:
var telephone2: String? = null // 可空变量
var length = telephone2?.length
println(length) // null
在上述示例中,telephone2?.length 表示如果 telephone2 不为 null,则返回其 length 属性值;如果 telephone2 为 null,则整个表达式返回 null。
除了安全调用操作符,我们还可以使用 Elvis 运算符 ?: 来指定可空变量为 null 时的默认值。示例如下:
var telephone3: String? = null // 可空变量
var length2 = telephone3?.length ?: 5
println(length2) // 5
在上述示例中,telephone3?.length ?: 5 表示如果 telephone3 不为 null,则返回其 length 属性值;如果 telephone3 为 null,则整个表达式返回 5。
另外,我们还有非空断言 !!.,它会将任何变量(可空类型变量或非空类型变量)转换为非空类型的变量。但是需要注意,如果该变量为空,则会抛出异常。示例如下:
var telephone5: String? = null
var result5 = telephone5!!.length // 这里会抛出 KotlinNullPointerException 异常
println(result5)
在上述示例中,我们使用了非空断言 !!. 来获取 telephone5 的 length 属性值。由于 telephone5 为 null,所以会抛出异常。
以上就是使用 Kotlin 处理可空类型的示例代码。通过安全调用操作符 ?.、Elvis 运算符 ?: 和非空断言 !!.,我们可以更加灵活地处理可空变量,避免空指针异常的发生。
希望本篇博客对你有所帮助!
相关文章:
Kotlin中的可空类型
在 Kotlin 中,可空类型是一项重要的特性,它允许我们声明变量可以为空。在本篇博客中,我们将介绍 Kotlin 中的可空类型,并提供示例代码演示如何处理可空变量、使用安全调用操作符(?.)、Elvis 运算符&#x…...
数学建模——最大流问题(配合例子说明)
目录 一、最大流有关的概念 例1 1、容量网络的定义 2、符号设置 3、建立模型 3.1 每条边的容量限制 3.2 平衡条件 3.3 网络的总流量 4、网络最大流数学模型 5、计算 二、最小费用流 例2 【符号说明】 【建立模型】 (1)各条边的流量限制 &a…...
AAOS CarMediaService 服务框架
文章目录 前言MediaSessionCarMediaService作用是什么?提供了哪些接口?如何使用?CarMediaService的实现总结 前言 CarMediaService 是AAOS中统一管理媒体播放控制、信息显示和用户交互等功能的服务。这一服务依赖于android MediaSession框架…...
gRPC之gRPC转换HTTP
1、gRPC转换HTTP 我们通常把RPC用作内部通信,而使用Restful Api进行外部通信。为了避免写两套应用,我们使用grpc- gateway 把gRPC转成HTTP。服务接收到HTTP请求后,grpc-gateway把它转成gRPC进行处理,然后以JSON 形式返回数据。…...
【十四】记一次MySQL宕机恢复过程,MySQL INNODB 损坏恢复
记一次MySQL宕机恢复过程 简介:一个业务数据库疏于运维管理,突然在今天崩溃宕机了,真是让人抓狂,上面也不知道积累了多久的数据,平时也没有定期做好备份,这下岂不是瞎了啊,经过不断的收集信息和…...
从0开始在Vscode中搭建Vue2/3项目详细步骤
1.安装node.js:Node.js下载安装及环境配置教程【超详细】_nodejs下载_WHF__的博客-CSDN博客 node.js自带npm,无需单独安装。 验证: node -v npm -v 2.先简单创建一个空文件夹,vscode进入该文件夹,并打开终端。 3.安装cnpm&…...
JavaScript ES6类的定义与继承
文章目录 一、class方式定义类1.认识class定义类2.类和构造函数的异同3.类的构造函数4.类的实例方法5.类的访问器方法6.类的静态方法 二、继承1.extends实现继承2.super关键字3.继承内置类4.类的混入mixin 三、ES6转ES51.class转换2.extends转换 四、多态 一、class方式定义类 …...
中科芯与IAR共建生态合作,IAR集成开发环境全面支持CKS32系列MCU
中国上海–2023年10月18日–嵌入式开发软件和服务的全球领导者IAR今日宣布,与中科芯集成电路有限公司(以下简称中科芯)达成生态合作,IAR已全面支持CKS32系列MCU的应用开发。这一合作将进一步推动嵌入式系统的发展,并为…...
设计模式:外观模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)
大家好!本节主要介绍设计模式中的外观模式。 简介: 外观模式,它是一种设计模式,它为子系统中的一组接口提供一个统一的、简单的接口。这种模式主张按照描述和判断资料来评价课程,关键活动是在课程实施的全过程中进行…...
Leetcode—34.在排序数组中查找元素的第一个和最后一个位置【中等】
2023每日刷题(六) Leetcode—34.在排序数组中查找元素的第一个和最后一个位置 实现代码 /*** Note: The returned array must be malloced, assume caller calls free().*/ int lower_bound(int *arr, int numsSize, int target) {// 左闭右开区间[lef…...
Java 8 新特性 Ⅱ
方法引用 举例: Integer :: compare 理解: 可以看作是基于lambda表达式的进一步简化 当需要提供一个函数式接口的实例时, 可以使用lambda表达式提供实例 当满足一定条件下, 可以使用方法引用or构造器引用替换lambda表达式 实质: 方法引用作为函数式接口的实例 (注: 需要熟悉…...
C语言学习书籍推荐
C语言学习书籍推荐如下: 《C程序设计语言》(The C Programming language):这本书由C语言创始人Brian W. Kernighan和Dennis M. Ritchie所写,是介绍标准C语言及其程序设计方法的权威性经典著作。《C陷阱与缺陷》&#…...
IntelliJ IDEA Maven加载超时问题
IDEA创建Maven项目遇到如下错误: Could not transfer artifact org.apache.maven.plugins:maven-compiler-plugin:pom:3.10.1 from/to central (Central Repository:): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/146.75.112.215] failed: conn…...
Spring中事务失效的几种场景及解决办法
未抛出异常:如果在一个带有事务的方法中没有抛出异常,Spring无法检测到事务失败,从而无法回滚。解决方法是确保在事务中遇到错误时抛出异常。 异常被捕获:如果在一个带有事务的方法中抛出异常,但被捕获并处理了&#…...
第五届太原理工大学程序设计竞赛新生赛(初赛)题解
第五届太原理工大学程序设计竞赛新生赛(初赛)题解 时隔半年重做一次,还是有几道不会,,,,, ⭐️A.饿饿饭饭 题目: 🌟题解: 很简单,签…...
微信小程序开发之后台数据交互及wxs应用
目录 一、后端准备 1. 应用配置 2. 数据源配置 二、数据库 1. 创建 2. 数据表 3. 数据测试 三、前端 1. 请求方法整合 2. 数据请求 3. WXS的使用 4. 样式美化 5. 页面 一、后端准备 通过SpringMVC及mybatis的技术学习,还有前后端分离的技术应用&…...
Java进阶篇--并发容器之ThreadLocal内存泄漏
目录 ThreadLocal内存泄漏的原因? 改进和优化 cleanSomeSlots方法 expungeStaleEntry方法 replaceStaleEntry方法 为什么使用弱引用? Thread.exit() ThreadLocal内存泄漏最佳解决方案 在使用完毕后立即清理ThreadLocal 使用InheritableThreadL…...
js实现红包雨功能(canvas,react,ts),包括图片不规则旋转、大小、转速、掉落速度控制、屏幕最大红包数量控制等功能
介绍 本文功能由canvas实现红包雨功能(index.tsx)本文为react的ts版。如有其他版本需求可评论区观赏地址,需过墙 import React, { Component } from react; // import ./index.css; import moneyx from /assets/images/RedEnvelopeRain/bal…...
【数字IC设计/FPGA】FIFO与流控机制
流控,简单来说就是控制数据流停止发送。常见的流控机制分为带内流控和带外流控。 FIFO的流水反压机制 一般来说,每一个fifo都有一个将满阈值afull_value(almost full)。当fifo内的数据量达到或超过afull_value时,将满…...
C++笔记之遍历vector的所有方式
C笔记之遍历vector的所有方式 —— 2023年4月15日 上海 code review 文章目录 C笔记之遍历vector的所有方式1.普通for循环2.迭代器版3.const迭代器4.C11引入的范围for循环5.使用auto关键字和迭代器6.使用std::for_each算法7.使用std::for_each和lambda表达式8.普通版vector::at…...
保姆级教程:用OpenAI的SDK无缝调用百度智能云ERNIE大模型(附完整代码)
从OpenAI到百度ERNIE:开发者无缝迁移实战指南 当ChatGPT点燃全球AI热潮时,国内开发者也在积极探索本土大模型的应用可能。百度ERNIE作为中文领域的佼佼者,其3.5版本在语义理解和生成任务上表现出色。但对于已经熟悉OpenAI开发套件的技术团队来…...
从CTF实战出发:手把手教你用取反、异或绕过PHP命令执行黑名单(附脚本)
从CTF实战出发:手把手教你用取反、异或绕过PHP命令执行黑名单(附脚本) 在CTF竞赛和安全研究中,PHP命令执行漏洞是常见的考察点。面对严格的黑名单过滤机制,传统的攻击手法往往失效。本文将深入剖析两种高效绕过技术——…...
【原创代码】基于贝叶斯优化的PatchTST综合能源负荷多变量时间序列预测
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书…...
FanControl传感器异常终极解决方案:三步诊断与高效修复指南
FanControl传感器异常终极解决方案:三步诊断与高效修复指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendi…...
EssentialsX插件快速部署与完整配置指南
EssentialsX插件快速部署与完整配置指南 【免费下载链接】Essentials The modern Essentials suite for Spigot and Paper. 项目地址: https://gitcode.com/GitHub_Trending/es/Essentials EssentialsX是为Spigot和Paper服务器设计的现代化Essentials套件,提…...
华硕笔记本终极控制方案:10MB轻量级工具G-Helper完全指南
华硕笔记本终极控制方案:10MB轻量级工具G-Helper完全指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix,…...
终极指南:在Mac上使用Xbox 360手柄的完整教程
终极指南:在Mac上使用Xbox 360手柄的完整教程 【免费下载链接】360Controller TattieBogle Xbox 360 Driver (with improvements) 项目地址: https://gitcode.com/gh_mirrors/36/360Controller 360Controller 是一款专为macOS设计的开源驱动程序,…...
react-native-shared-element 性能优化技巧:避免闪烁和提升动画流畅度
react-native-shared-element 性能优化技巧:避免闪烁和提升动画流畅度 【免费下载链接】react-native-shared-element Native shared element transition "primitives" for react-native 💫 项目地址: https://gitcode.com/gh_mirrors/re/re…...
3 shell脚本编程
Shell脚本简介shell脚本是什么?shell脚本是由 shell命令组成 的文本文件。利用shell命令加shell语法,配合正则表达式、管道命令、数据流从定向等写成的纯文本脚本文件。以.sh为后缀为什么要写它?1、自动话重复任务:可以将重复性或…...
从控制台到文件:用Fortran读写数据的完整流程(含read/write参数详解)
从控制台到文件:用Fortran读写数据的完整流程(含read/write参数详解) 在科学计算和工程仿真领域,数据持久化是构建可靠工作流的关键环节。Fortran作为高性能计算的基石语言,其文件操作能力直接影响着科研数据的处理效率…...
