kotlin isEmpty/isNotEmpty/isNullOrEmpty和isBlank/isNotBlank/isNullOrBlank

kotlin 中

isEmpty :如果判断的字符为空返回值返回true否则返回false

它的源码

@kotlin.internal.InlineOnly
public inline fun CharSequence.isEmpty(): Boolean = length == 0

length == 0: 首先检查字符序列的长度是否为 0。如果长度为 0,则表明这个字符序列不包含任何字符,因此被认为是空白的,直接返回 true,(符合java中空字符串的定义,一个长度为0的字符串)

isNotEmpty :如果判断的字符不为空返回值返回true否则返回false

它的源码

@kotlin.internal.InlineOnly
public inline fun CharSequence.isNotEmpty(): Boolean = length > 0

isNullOrEmpty : 如果判断的字符为空或者null返回true否则返回false

它的源码

@kotlin.internal.InlineOnly
public inline fun CharSequence?.isNullOrEmpty(): Boolean {
contract {
returns(false) implies (this@isNullOrEmpty != null)
}

return this == null || this.length == 0
}

看下这个的打印值

val str1: String? = null
Log.d("=======isEmpty", str1?.isEmpty().toString())

写完之后编译器一直提示str1?.isEmpty() is always null ,运行的打印结尾也是null

原因是安全调用操作符 ?. 允许我们在链式调用中安全地访问可空对象的方法或属性,如果对象为 null,则整个表达式的结果也为 null。当 str1 为 null 时,str1?.isEmpty() 不会执行 .isEmpty() 方法,因为 str1 已经是 null,不需要进一步检查其是否为空字符串。

所以有时候根据条件不同选择isNullOrEmpty

列举几个打印为true的

        // 如果判断字符为空返回值返回true否则返回falseLog.d("=======isEmpty", "".isEmpty().toString()) //打印结果为true// 如果判断字符不为空返回值返回true否则返回falseLog.d("=======isNotEmpty", "123".isNotEmpty().toString()) //打印结果为trueval str1: String? = null// 如果为空或者null返回true否则返回falseLog.d("=======isNullOrEmpty", str1.isNullOrEmpty().toString()) //打印结果为true

在说下面的之前看下这个

Log.d("=======isEmpty", " ".isEmpty().toString()) //打印结果为false

isEmpty只关心字符串是否有字符,像这种空白字符,是有长度的所以无法使用isEmpty

isBlank  如果判断的字符为空或者是一个空字符返回true负责返回false

isNotBlank  如果判断的字符不为空或者不是一个空字符返回true负责返回false

isNullOrBlank  如果判断的字符为nul,空或者是一个空字符返回true负责返回false

理解几个打印为true的例子

        // 如果判断的字符为空返回值返回true否则返回falseLog.d("=======isBlank", " ".isBlank().toString()) //打印结果为true// 如果判断字符不为空返回值返回true否则返回falseLog.d("=======isNotBlank", "123".isNotBlank().toString()) //打印结果为trueval str1: String? = null// 如果为空或者null返回true否则返回falseLog.d("=======isNullOrBlank", str1.isNullOrBlank().toString()) //打印结果为true

最后说下空字符与单个空格字符的区别

""这个是空字符串 一个长度为 0 的字符串
“ ”单个空格字符 这是一个只包含一个空白字符(ASCII 码为 32 的字符)的字符串,其长度为 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ClickHouse(20)ClickHouse集成PostgreSQL表引擎详细解析

文章目录 PostgreSQL创建一张表实施细节用法示例 资料分享参考文章 PostgreSQL PostgreSQL 引擎允许 ClickHouse 对存储在远程 PostgreSQL 服务器上的数据执行 SELECT 和 INSERT 查询. 创建一张表 CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] (name…

C#使用 OpenHardwareMonitor获取CPU或显卡温度、使用率、时钟频率相关方式

C# 去获取电脑相关的基础信息,还是需要借助 外部的库,我这边尝试了自己去实现它 网上有一些信息,但不太完整,都比较零碎,这边尽量将代码完整的去展示出来 OpenHardwareMonitor获取CPU的温度和频率需要管理员权限 在没…

回顾2023,展望2024

又是一年起始,在这里回顾一下过去,展望一下未来。今年已经是自己的本命年了,龙行龘龘,希望在自己的本位年能够有更多的努力和更多的收获。 关于工作 在无锡工作已经一个完整的年份了,工作上平平稳稳,也适应…

梯度下降法

前言:在均方差损失函数推导中,我使用到了梯度下降法来优化模型,即迭代优化线性模型中的和。现在进一步了解梯度下降法的含义以及具体用法。 一、梯度下降法(入门级理解) 定义:梯度下降是一种用于最小化损失函数的优化…

Python爬取今日头条热门文章

前言 今日头条文章收益是没有任何门槛,只要是你发布文章,每篇文章的阅读量超过1000就能有收益,阅读量越多收益越高。于是乎我就有了个大胆的想法。何不利用Python爬虫,爬取热门文章,然后完成自动化发布文章呢&#xf…

专访 | STIF2023第四届国际科创节访第七在线CEO赵嘉程

12月15日,在STIF2023第四届国际科创节暨数服会上,第七在线获得年度数智化创新典范奖,第七在线CEO赵嘉程在颁奖典礼现场接受了媒体专访。 主持人:赵总,您好,欢迎您接受我们的专访,首先我们特别想…

二、Redis的特性与应用场景

Redis是一个在内存中存储数据的中间件,主要用于作为数据库、数据缓存,在分布式系统中有着非常重要的地位。面试中可以围绕Redis的特性进行介绍。 一、Redis特性 1、在内存中存储数据 MySQL主要是“表”的方式来存储组织数据的,是“关系型数…

杰发科技AC7840——Eclipse环境DMA注意事项

0.序 用 户 使 用 DMA 时 , 所 有 DMA 搬 运 的 SRAM 数 据 都 必 须 存 放 在 SRAM_U 区 (0x20000000~0x2000EFFF) 。 1. 修改办法 第一步: RAM定义 /* Specify the memory areas */ MEMORY {FLASH (rx) : ORIGIN 0x00000000, LENGT…

dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib

更新Xcode14后低版本iPhone调试报错 dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib Referenced from: /var/containers/Bundle/Application/…/….app/… Reason: image not found 这是缺少libswiftCoreGraphics库 直接导入libswiftCoreGraphics库即…

【新手小白的xsslab靶场学习】

第1关 最开始页面源代码 直接输入<script>alert(1)</script> 第2关 页面源代码 先尝试<script>alert(1)</script>看页面源代码 <h2>里面尖括号被编码&#xff0c;<input>里面没有编码,直接双引号闭合&#xff0c; 修改payload&…

STM32F407-14.3.10-表73具有有断路功能的互补通道OCx和OCxN的输出控制位-01x00

如上表所示&#xff0c;MOE0&#xff0c;OSSI1&#xff0c;CCxE0&#xff0c;CCxNE0时&#xff0c;OCx与OCxN的输出状态取决于GPIO端口上下拉状态。 ---------------------------------------------------------------------------------------------------------------------…

elasticsearch-curator: es索引生命周期(关闭、删除索引)

1&#xff0c;下载安装 rpm包下载安装 # 防止安装rpm包报错&#xff1a;error: [upel]: elasticsearch-curator NOKEY &#xff1b; # error: [upel]: elasticsearch-curator signature check fail rpm --import https://artifacts.elastic.co/GPG-KEY-ela…

基于RetinaFace+Jetson Nano的智能门锁系统——第二篇(配置环境)

文章目录 设备一、安装远程登录终端Xshell1.1下载Xshell1.2新建回话1.3查询ip地址1.4启动连接 二、安装远程文件管理WinScp2.1下载WinScp2.2连接Jetson Nano2.3连接成功 三、安装远程桌面VNC Viewer3.1下载VNC Viewer3.2在Jetson Nano安装VNC Viewer3.3设置VINO登录选项3.4将网…

单片机原理及应用:计数按键控制数码管显示

承接上文&#xff0c;我们来介绍一下按键和数码管的配合工作&#xff0c;由于数码管显示的字符和位数多种多样&#xff0c;无法做到一个字符对应一个按键&#xff0c;所以程序主要记录按键的使用次数来切换数码管的显示。 #include <reg52.h> //包含reg52.h头…

opencv003图像裁剪(应用NumPy矩阵的切片)

这一部分相对于马上要学习的二值化是要更更更简单一些的&#xff0c;只需三行&#xff0c;便能在opencv上裁剪图像啦&#xff08;顺便云吸猫&#xff0c;太可爱了&#xff01;&#xff09; 出处见水印&#xff01; 1、复习图像的显示 前几天期末考试&#xff0c;太久没有看…

第28关 k8s监控实战之Prometheus(一)

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。对于运维开发人员来说&#xff0c;不管是哪个平台服务&#xff0c;监控都是非常关键重要的。 在传统服务里面&#xff0c;我们通常会到zabbix、open-falcon、netdata来做服务的监控&#xff0…

error C2666: “Date::operator ==”: 重载函数具有类似的转换

error C2666: “Date::operator ”: 重载函数具有类似的转换 1.错误描述2.解决方案 1.错误描述 class Date { public:Date(int year 2024, int month 1, int day 1){_year year;_month month;_day day;}bool operator(const Date& d){return _year d._year&&…

接入第三方登录

1.进行认证 https://graph.qq.com/oauth2.0/authorize?response_typecode&client_id[YOUR_APPID]&redirect_uri[YOUR_REDIRECT_URI]&scope[THE_SCOPE] https://graph.qq.com/oauth2.0/show?whichLogin&displaypc&client_id101284669&redirect_urih…

认识SpringBoot项目中的Starter

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 循序渐进学SpringBoot ✨特色专栏&…

流量预测_MLP模型_keras

目录 0、我在干什么&#xff1f;1、import libararies2、加载数据load data3、独家观察数据函数 :heartbeat:4、数据预处理pre-processing&#xff08;1&#xff09;将时间戳转换为一个日期时间索引&#xff08;2&#xff09;填充所有缺失的值&#xff08;3&#xff09;将时间序…