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

kotlin空类型安全 !! ?. ?:

1、定义可空类型

fun main(){// 定义可空类型var x:String? = "hello"x = null
}

2、!! 强转类型

定义可空类型之后,如果使用其内置方法,编译不会通过,因为值有可能为null,可以使用 !! 把类型强转为不可空:

fun main(){// 定义可空类型var x:String? = "hello"// 此时x值确定为不可空类型,所以可以调用length方法val y =  x!!.length // y 类型为 int 类型println("${y.javaClass.simpleName}") // int
}
注意事项:上边!! 运算符不是安全的,因为如果该值是否为空,会报空指针异常。

3、?.   安全访问运算符

定义及使用

fun main(){// 定义可空类型var x:String? = "hello"// 获取字符串长度:如果x不为空,则返回其长度,否则返回0var y = x?.length?:0println(y) // 5x = nully = x?.length?:0println(y) // 0
}

注意事项:

(1) ?.  为安全访问,判断逻辑是:x?.length  只有x值不为空时,才会调用 .length。

(2)上边 ?: 运算符 是安全的,判断逻辑是: 如果 ?: 前边值为空,则使用后边定义的值。

相关文章:

kotlin空类型安全 !! ?. ?:

1、定义可空类型 fun main(){// 定义可空类型var x:String? "hello"x null } 2、!! 强转类型 定义可空类型之后,如果使用其内置方法,编译不会通过,因为值有可能为null,可以使用 !! 把类型强转为不可空&#xff1a…...

通过 WireGuard 组建虚拟局域网 实现多个局域网全互联

本文后半部分代码框较多,欢迎点击原文链接获得更佳的阅读体验。 前言 上一篇关于 WireGuard 的文章通过 Docker 安装 wg-easy 的形式来使用 WireGuard,但 wg-easy 的功能比较有限,并不能发挥出 WireGuard 的全部功力。 如果只是想要出门在外连随时随地的连回家里的局域网,…...

qmt量化交易策略小白学习笔记第47期【qmt编程之期货仓单】

qmt编程之获取期货数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 感谢关注,咨询免费开通量化回测与获取实盘权限,欢迎和博主联系! 期货仓单 提示 1…...

点云处理中阶 Sampling

目录 一、什么是点云Sampling 二、示例代码 1、下采样 Downsampling 2、均匀采样 3、上采样 4、表面重建 一、什么是点云Sampling 点云处理中的采样(sampling)是指从大量点云数据中选取一部分代表性的数据点,以减少计算复杂度和内存使用,同时保留点云的几何特征和重…...

为什么print语句被Python3遗弃?

在开发和维护python项目的时候发现经常有print语句报错,原因是python3放弃了print语句 print 语句 早就被列在了不可靠的语言特性列表中,例如 Guido 的“Python 之悔”(Python Regrets)演讲【1】,并计划在 Python 300…...

067、Python 高阶函数的编写:优质冒泡排序

以下写了个简单的冒泡排序函数: def bubble_sort(items: list) -> list:for i in range(1, len(items)):swapped Falsefor j in range(0, len(items) - 1):if items[j] > items[j 1]:items[j], items[j 1] items[j 1], items[j]swapped Trueif not swa…...

【Python】从基础到进阶(一):了解Python语言基础以及变量的相关知识

🔥 个人主页:空白诗 文章目录 引言一、Python简介1.1 历史背景1.2 设计哲学1.3 语言特性1.4 应用场景1.5 为什么选择Python 二、Python语言基础2.1 注释规则2.1.1 单行注释2.1.2 多行注释2.1.3 文件编码声明注释 2.2 代码缩进2.3 编码规范2.3.1 命名规范…...

AI学习指南机器学习篇-KNN的优缺点

AI学习指南机器学习篇-KNN的优缺点 在机器学习领域中,K最近邻(K-Nearest Neighbors,KNN)算法是一种十分常见的分类和回归方法之一。它的原理简单易懂,但在实际应用中也存在一些优缺点。本文将重点探讨KNN算法的优缺点…...

全网最全!25届最近5年上海理工大学自动化考研院校分析

上海理工大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试…...

LANG、LC_MESSAGES和LC_ALL

在Linux系统中,环境变量LANG、LC_MESSAGES和LC_ALL用于控制系统和应用程序的语言和区域设置(locale)。它们的具体作用如下: LANG: LANG是最基本的环境变量,用于指定系统的默认语言和区域设置。它是一个全局…...

生成式AI和LLM的一些基本概念和名词解释

1. Machine Learning 机器学习是人工智能(AI)的一个分支,旨在通过算法和统计模型,使计算机系统能够从数据中学习并自动改进。机器学习算法使用数据来构建模型,该模型可用于预测或决策。机器学习应用于各种领域&#x…...

python项目(课设)——飞机大战小游戏项目源码(pygame)

主程序 import pygame from plane_sprites import * class PlaneGame: """ 游戏类 """ def __init__(self): print("游戏初始化") # 初始化字体模块 pygame.font.init() # 创建游戏…...

Chatgpt教我打游戏攻略

宝可梦朱 我在玩宝可梦朱的时候,我的同行队伍里有黏美儿,等级为65,遇到了下雨天但是没有进化,为什么呢? 黏美儿(Goomy)要进化为黏美龙(Goodra),需要满足以下…...

最全信息收集工具集

吉祥学安全知识星球🔗除了包含技术干货:Java代码审计、web安全、应急响应等,还包含了安全中常见的售前护网案例、售前方案、ppt等,同时也有面向学生的网络安全面试、护网面试等。 所有的攻防、渗透第一步肯定是信息收集了&#xf…...

redis类型解析汇总

redis类型解析汇总 介绍数据类型简介主要数据类型:衍生类型: 字符串(String)底层设计原理图例设计优势字符串使用方法设置字符串值获取字符串值获取和设置部分字符串获取字符串长度追加字符串设置新值并返回旧值递增/递减同时设置…...

Unity3d自定义TCP消息替代UNet实现网络连接

以前使用UNet实现网络连接,Unity2018以后被弃用了。要将以前的老程序升到高版本,最开始打算使用Mirro,结果发现并不好用。那就只能自己写连接了。 1.TCP消息结构 (1). TCP消息是按流传输的,会发生粘包。那么在发射和接收消息时就需要对消息进行打包和解包。如果接收的消息…...

git fetch 和 git pull区别

git branch //查看本地所有分支 git branch -r //查看远程所有分支 git branch -a //查看本地和远程的所有分支 git branch <branchname> //新建分支 git branch -d <branchname> //删除本地分支 git branch -d -r <branchname> //删除远程分支&#x…...

冲击2024年CSDN博客之星TOP1:CSDN文章质量分查询在哪里?

文章目录 一&#xff0c;2023年博客之星规则1&#xff0c;不高的入围门槛2&#xff0c;[CSDN博文质量分测评地址](https://www.csdn.net/qc) 二&#xff0c;高分秘籍1&#xff0c;要有目录2&#xff0c;文章长度要足够&#xff0c;我的经验是汉字加代码至少1000字。3&#xff0…...

高性能并行计算华为云实验一:MPI矩阵运算

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建矩阵乘法源码 3.1.1 实验说明 3.1.2 实验步骤 3.2 创建卷积和池化操作源码 3.2.1 实验说明 3.2.2 实验步骤 3.3 创建Makefile文件并完成编译 3.4 建立主机配置文件与运行监测 四、实验结果与分析 4.1 矩阵乘法…...

库卡机器人减速机维修齿轮磨损故障

一、KUKA机器人减速器齿轮磨损故障的原因 1. 润滑不足&#xff1a;润滑油不足或质量不佳可能导致齿轮磨损。 2. 负载过重&#xff1a;超过库卡机械臂减速器额定负载可能导致齿轮磨损。 3. 操作不当&#xff1a;未按照说明书操作可能导致KUKA机器人减速器齿轮磨损。 4. 维护不足…...

别光看YOLOv5了!从R-CNN到DETR:手把手带你拆解目标检测算法演进史与代码复现

从R-CNN到DETR&#xff1a;目标检测算法演进的技术考古与实战复现 当计算机视觉领域的研究者第一次看到YOLOv5在COCO数据集上达到60FPS的实时检测速度时&#xff0c;很少有人意识到这背后是长达十年的算法范式革命。目标检测作为计算机视觉的基础任务&#xff0c;其发展轨迹完美…...

HYCONTROL MICROFLEX-DB超声波液位计实操详解(参数+工况+故障排查)

在工业液位测量中&#xff0c;腐蚀性介质、罐内干扰、泡沫水汽、后期维护量大一直是现场普遍痛点&#xff0c;很多中小型储罐、水池、反应罐都会纠结性价比高、调试简单、稳定性强的超声波液位计。今天给大家详细拆解一款进口紧凑型液位变送器&#xff1a;英国HYCONTROL海康MIC…...

ARM SVE2饱和运算指令SQSHRNB与SQSHRUNB详解

1. ARM SVE2指令集概述ARM的可伸缩向量扩展第二版(SVE2)是NEON指令集的下一代演进&#xff0c;为高性能计算和机器学习工作负载提供了更强大的向量处理能力。与传统的SIMD指令集不同&#xff0c;SVE2引入了多项创新特性&#xff1a;可变向量长度(VLA)&#xff1a;程序员无需针对…...

办公Agent从0到1落地指南,5个步骤 + 6个避坑

大家好&#xff0c;我是小悟。 一、核心逻辑&#xff1a;Agent不是“对话机器人”&#xff0c;而是“数字执行者” 很多团队误以为采购了某个AI助手&#xff08;如会议纪要工具、代码生成插件&#xff09;就是引进了Agent。真正的办公Agent具备“感知-决策-执行”闭环&#xff…...

【免费下载】 探索语音合成新境界:so-vits-svc-4.1-Stable 资源文件推荐

探索语音合成新境界&#xff1a;so-vits-svc-4.1-Stable 资源文件推荐 【下载地址】so-vits-svc-4.1-Stable资源文件下载 本仓库提供 so-vits-svc-4.1-Stable 资源文件的下载。该资源文件是一个稳定版本的 so-vits-svc 模型&#xff0c;适用于语音合成和相关应用 项目地址: h…...

3分钟掌握无人机日志分析:免费在线工具UAV Log Viewer完全指南

3分钟掌握无人机日志分析&#xff1a;免费在线工具UAV Log Viewer完全指南 【免费下载链接】UAVLogViewer An online viewer for UAV log files 项目地址: https://gitcode.com/gh_mirrors/ua/UAVLogViewer 面对复杂的无人机飞行数据&#xff0c;你是否曾为分析日志文件…...

从DDR到LPDDR:搞懂手机和电脑内存差异,看这一篇就够了(附选型避坑指南)

从DDR到LPDDR&#xff1a;全面解析移动与桌面内存的技术差异与选型策略 在智能设备性能爆发的时代&#xff0c;内存技术正经历着从"够用"到"极致优化"的转变。当工程师面对物联网终端需要0.5W超低功耗、游戏手机追求100GB/s带宽、自动驾驶系统要求纳秒级延…...

HTML代码加密工具源码_在线网页加密解密_防复制源码

概述 在前端开发与网页设计中&#xff0c;保护原创代码不被轻易复制或篡改是许多开发者的核心诉求。无论是为了隐藏核心逻辑&#xff0c;还是防止样式被恶意盗用&#xff0c;一款高效、安全的加密工具都显得尤为重要。为此&#xff0c;幽络源源码网特别整理并分享这款HTML代码…...

为开发者工具注入情感分析能力:开源库ai-devtools-sentiment实战指南

1. 项目概述&#xff1a;一个为开发者工具注入情感分析能力的开源库最近在折腾一些开发者工具&#xff0c;比如代码审查机器人、文档生成器或者IDE插件&#xff0c;我总感觉它们冷冰冰的。它们能告诉你代码有语法错误&#xff0c;能提示你某个API已废弃&#xff0c;但它们无法感…...

量子纠错与Floquet码:动态编码与ZX演算实践

1. 量子纠错与Floquet码基础量子纠错码是构建容错量子计算机的核心技术。与传统纠错码不同&#xff0c;量子态具有不可克隆特性&#xff0c;使得量子纠错必须采用特殊方法。稳定子码&#xff08;Stabilizer Codes&#xff09;是目前最成熟的量子纠错方案&#xff0c;通过测量多…...