Java 中的判空操作

Java中优雅地判空值,简写代码结构 关于空对象模式,更具体的内容大家也可以多找一找资料,上述只是对NullObject的简单介绍,但是,今天我要推荐的是一款协助判空的插件NR Null Object,让我们来优雅地进行判空,不再进行一顿操作来定义繁琐的空对象接口与空独享实现类。Nullable是空对象的相关操作接口,用于确定对象是否为空,因为在空对象模式中,对象为空会被包装成一个Object,成为Null Object,该对象会对原有对象的所有方法进行空实现。如果存在值,isPresent()将返回true,get()将返回该值。 阅读详情

equals与==的区别

一、String 的 isEmpty() 与 null 与 “” 区别

public class demo {
    public static void main(String[] args) {
        String a = new String();
        String b = "";
        String c = null;
        test(a);
        test(b);
        test(c);
    }
    private static void test(String str) {
        if (str == null) {
            System.out.println("null");
        }
        if (str.isEmpty()) {
            System.out.println("isEmpty");
        }
        if (str.equals("")) {
            System.out.println("");
        }
        System.out.println("------分割线------");
    }
}

output

通过程序段运行结果可以分析:

  • a 被分配了内存空间且值为空,是一种有值的绝对空;
  • b 被分配了内存空间且值为空字符串,是一种有值的相对空;
  • c 未分配内存空间且无值,是一种无值状态。

所以判断一个 String 变量是否是空对象,应拿其与 null 进行 == 比较,不能使用 equals()、isEmpty()、"" 等进行判断,因为空对象还未被实例化。

而对于 String 的空值判断可以采用三种方法,"".equals(str)比较对象的内容是否为空值;length() == 0来判断 String 的字符个数是否空值;isEmpty()来判断 String 对象的字符个数是否为空值(其实现原理等价于 length() == 0)。

对于空格字符串,虽然在输出显示时候和空值一样,都是空的,但是在运行时空格字符串表示该对象的内存空间里面有内容(是空格,字符个数是空格的个数)。所以在使用 length() 输出的值为空格个数,使用 isEmpty() 输出为 false,使用 “”.equals(str) 判断为 false。

对于 String 的 + 操作符来说,如果有一个操作数是 String,其他操作数会被转换成 String。特别注意,null 与字符串 “XXXX” + 操作会变成 “nullXXXX”。

二、str.equals(“123”) 和 “123”.equals(str) 的区别

"123".equals(str); 因为就算 str 为空,还是会返回 false。但如果用str.equals("123")就会报 NPE。

三、 isEmpty(String str) 和 isBlank(String str)

org.apache.commons.lang.StringUtils 类提供了 String 的常用操作。最为常用的判空有两种 isEmpty(String str) 和 isBlank(String str),源码如下:

    public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }
    public static boolean isNotEmpty(String str) {
        return !isEmpty(str);
    }
    public static boolean isBlank(String str) {
        int strLen;
        if (str != null && (strLen = str.length()) != 0) {
            for(int i = 0; i < strLen; ++i) {
                if (!Character.isWhitespace(str.charAt(i))) {
                    return false;
                }
            }
            return true;
        } else {
            return true;
        }
    }
    public static boolean isNotBlank(String str) {
        return !isBlank(str);
    }

1️⃣StringUtils.isEmpty(String str)判断某字符串为空的标准是 【str == null 】或 【str.length() == 0】
2️⃣StringUtils.isBlank(String str)判断某字符串为空的标准是 【str == null 】或【str.length() == 0】或【由空白符 (whitespace) 构成】
3️⃣StringUtils.isNotEmpty(String str)等价于!isEmpty(String str)
4️⃣StringUtils.isNotBlank(String str)等价于!isBlank(String str)

建议:
StringUtils.isBlank(String str)来执行判空操作,判断的条件更多更具体,特别是进行参数校验时,推荐使用。

【FastDDS】Discovery ( 01-overview ) Fast DDS 提供了多种发现机制用于自动匹配数据写入器和读取器,包括简单发现(默认兼容RTPS标准)、静态发现(可跳过SEDP阶段)、集中式的发现服务器架构以及手动RTPS发现。发现过程分为参与者发现(PDP)和端点发现(EDP)两个阶段,PDP通过多播/单播公告确认参与者存在,EDP则匹配主题和数据类型相同的端点。系统支持配置发现协议、租约期限等通用参数,以及各机制特有设置如静态EDP XML配置、服务器定位器等。此外还支持通过监听器实现发现回调功能。 阅读详情

相关推荐

工业级隔离CAN FD收发器ISO1042设计实战:从原理到EMC防护

在工业自动化与伺服驱动系统中,CAN总线是实现设备间可靠通信的关键技术。其核心原理是通过差分信号传输和仲裁机制,在复杂电磁环境中实现多节点实时数据交换。这项技术的核心价值在于为高噪声、高干扰的工业现场提供了稳定、确定性的通信基础,是构建分布式控制系统不可或缺的环节。其典型应用场景包括新能源汽车电池管理、工业机器人伺服控制以及光伏逆变器集群通信等。本文将聚焦于如何通过高性能隔离CAN FD收发器(如TI的ISO1042)来应对地电位差、浪涌和高压串扰等现场挑战,深入解析其集成的电气隔离、±70V总线故障保护和

weixin_26834815的博客 385

java判空快捷_Java中的判空操作

一、String 的 isEmpty() 与 null 与 "" 区别public class demo {public static void main(String[] args) {String a = new String();String b = "";String c = null;test(a);test(b);test(c);}private static void test(St...

weixin_42186728的博客 455

国际项目投标那些事(三)海外项目招标文件的组成

以一个实际的项目作为例子,是我2020年初投的一个东南亚国家的水厂的竞争性投标。这个投标的招标基于FIDIC yellow book (Design and Build) 合同模板。 海外项目的招标一般是有专门的咨询公司(consulting engineer)写招标文件,有的咨询公司非常专业,对于技术、合同、业绩的要求非常细致。 我这个项目的招标文件共5册 400多页(全英文),附件26册将...

WTSolutions的博客 2003

判空的方法

String allSeparateBump = item03List.stream().filter(o -> “所有引脚内是否都是孤立BUMP”.equals(o.getItem())).findFirst().orElse(new FCPkgPlaneInfoItem03()).getData();

qq_45880942的博客 621

基于大模型的自动驾驶智能体:Agent-Driver架构、训练与实战指南

自动驾驶系统正从传统的模块化流水线向以智能体为核心的新范式演进。其核心原理在于将车辆视为一个能够与环境持续交互的自主决策智能体,通过多模态感知、记忆管理和基于大模型的推理能力,实现对复杂交通场景的理解与应对。这一技术价值在于利用大模型的常识推理和泛化能力,有望解决传统方法在长尾场景下面临的挑战。在应用场景上,智能体驱动架构特别适合处理动态交互密集、需高层语义理解的城区驾驶、无保护转弯及突发状况应对。本文聚焦的Agent-Driver项目,正是这一方向的典型实践,它通过融合视觉、语言大模型与强化学习,构建了一

weixin_28729843的博客 529

树莓派c语言串口通讯程序

在网上搜了很多关于树莓派串口通讯的例子,但是都是用python写的,虽然python很有名,而且最近也在学习这门语言, 但是还是想用c语言实现一下,因为需要用到整套系统里,其他内容都是用c语言写的。但是网上没有找打现成的。 还好,之前做过天嵌2440开发板的串口程序(参照天嵌工程师提供的代码),发现串口程序其实是通用的, 驱动层屏蔽了硬件细节,个人猜测,几乎所有移植好的系统的串口,都可以用一

realank的专栏 1万+

判断String是否为空的几种方法(isEmpty(),equals()的用法)

判断String是否为空的几种方法 判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0 基本的知识 (1)String str1 = null; 表示str1的引用为空,他没有地址, 他是一个没有被实例化的对象 (2)String str2 = " ";表示str2引用为空字符串,他有地址, 他是被实例化的对象,仅仅值为空而已 如果是string对象是null 如果是string对象是null,用 == 来判断,否则会抛出异常 “== ”操作在对String这种引

Liamcsl的博客 3万+

Python爬虫实战:实时监控美国SEC官网文件更新,助你第一时间掌握市场动态

在资本市场中,信息就是财富。美国证券交易委员会(SEC)官网公开了大量公司披露文件,涵盖财报、招股说明书、内幕交易等重要信息。对投资者、分析师及法律合规人员来说,实时监控这些公开文件具有重要价值。

2201_76125261的博客 594

Java 判空的常见方法以及工具类的总结

isBlank() 方法是在 JDK 11 中新增的,能够判断字符串是否为空或全为空格,因此不需要再使用 trim() 方法进行判断。另外,两段代码还有一个细微的差别。第一段代码使用了 if(isBlank(data.getUserName())) 的形式进行判断,而第二段代码使用了 if(StrUtil.isBlank(data.getUserName())) 的形式。在判断集合、数组、对象是否为空时,进行非空判断时最好先判断对象是否存在,否则在对象不存在的情况下操作对象可能会导致空指针异常的发生。

白白白鲤鱼的博客 1万+

OPTEE v4.4.0 qemu_v8环境搭建(支持Hafnium)

一、前提条件 二、拉取代码 三、下载工具链 四、修改代码 五、编译 六、运行

AI-安全-功耗 889

34 python 时间和日期

介绍python里时间和日期的常用方法,以及案例,还有注意事项。

水滴爬呀爬 347

java中的各种类型的判空操作

1. java中对类对象的判空操作: Person person= new Person(); if(null==person){ } 2. String类型的判空操作: public static void main(String[] args) { String s=null; if(s == null || s.length() <= 0){ System.out.println("执行s为空---------

psjasf1314的博客 1567

计算机网络实验报告实验七可靠传输TCP协议分析

计算机网络实验报告实验七可靠传输TCP协议分析

m0_56638814的博客 966

【集合】JAVA中的集合以及判空操作大全

Java中有几种主要的集合框架,包括ListSetMap等,每种都有不同的特点和适用场景。ArrayListLinkedListVectorListHashSetTreeSetSetHashMapTreeMapLinkedListStack这些集合类各有优劣,选择合适的集合类取决于具体的业务需求。在实际开发中,常常需要根据不同的场景灵活使用这些集合类。

代码的魅力,根本走不出来 957

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

因在Java中不会优雅地判空,被CTO屌的快哭了。,java虚拟机内存模型面试

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。最后祝愿各位身体健康,顺利拿到心仪的offer!由于文章的篇幅有限,所以这次的蚂蚁金服和京东面试题答案整理在了PDF文档里很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。

m0_61549953的博客 1088

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

谈一谈 spring、springboot环境下字符串的判空,以及 java8的对象判空

StringUtils   spring以及springboot项目是经典的web应用框架,在web应用中经常会从前端传来用户输入的数据。可以使用spring提供的工具类:org.springframework.util.StringUtils 下面是判空以及对于一些没有实际意义的字符串的判断 System.out.println(StringUtils.hasText(null)); // false System.out.println(StringUtils.hasText(""));

诗水人间 6513

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

谈谈在Java中如何优雅地判空

作者:李良逸http://blog.imuxuan.com判空灾难作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢NullPointerExcept...

Java笔记虾 594

如何判断map为空_在Java中如何优雅地判空?原来判空可以这么轻松的就学会了...

判空灾难作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢 NullPointerException。不过 NullPointerException对于很多猿们来说,也是 Exception家族中最亲近的一员了。为了避免 NullPointerException来找我们,我们经常会进行如下操作:if (data != null) { do sth. }如果一个类...

weixin_39929138的博客 1701

在Java中如何优雅地判空

判空灾难作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢NullPointerException。不过NullPointerExcep...

java面试笔试 304

拜托!不要在 Java 用 != null 做判空了

????????关注后回复“进群”,拉你进程序员交流群????????为了避免空指针调用,我们经常会看到这样的语句...if(someobject!=null){ so...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 466

【Java】Java中的一些小知识点

1.@Table注解 用来标识实体类与数据表的对应关系 @Table(name = "表名") 2.@Column注解 用来标识实体类中属性与数据表中字段的对应关系 @Column(name = "字段名", length=1000) //length属性表示字段的长度,默认255 3.instanceof关键字 java 中的instanc...

人人都是量化师的专栏 528

NPE 太头疼了,该如何优雅的处理null?

判空灾难 作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢NullPointerException。 不过NullPointerException对于很多猿们来说,也是Exception家族中最亲近的一员了。 Wowo 为了避免NullPointerException来找我们,我们经常会进行如下操作。 if(data!=null){ dosth. } 如果一个类中多次使用某个对象,那你可能要一顿操作,so: “世...

代码界的扛把子 211

NPE,让我们太头疼了,该如何优雅的处理null呢?

判空灾难 作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢NullPointerException。 不过NullPointerException对于很多猿们来说,也是Exception家族中最亲近的一员了。 为了避免NullPointerException来找我们,我们经常会进行如下操作。 if (data != null) { do sth. } 如果一个类...

Xn346的博客 413

optional判断是否为空_JDK8,OPTIONAL

作为程序员,你肯定遇到过NullPointerException, 这个异常对于初出茅庐的新人, 还是久经江湖的老手都是不可避免的痛, 可又是那么的无能为力,为了解决它,你只能在使用某个值之前,对其进行判空处理。然而这样会使得代码变得臃肿不堪。幸好jdk8引入了optional来处理了null的问题,使得我们可以不再对null做过多的关心。 先展示jdk8之前的写法1 // First befo...

weixin_39612297的博客 1642

判断是否相等 判空 equals

字符串 然后用.equal String firstProcessStep = processMapper.selectFirstProcess(process).getProcessStep().toString(); String evaluationStates1 = wholeDepartmentList.get(i).getEvaluationStates(); if ( evalua...

飘然生的博客 519

java开发中预防NPE异常

在程序中为了预防NPE NullPointerException 空指针异常 要对接收到的各种数据类型、包装类型判空操作: // 实体类对象 User user = new User; if (user == null) { return ; } //String类型 String str ; if (StringUtils.isEmpty(s)) { return ;...

liuluteng的博客 1302
上一篇: Java 数据类型及其判断
下一篇: Java数据类型的转换:隐式(自动)转换与强制转换
JFS_Study
博客等级 码龄6年 363粉丝 359原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JFS_Study

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值