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

Java开发之常用的判空方法

一、JDK8自带的方法

1.运算符判断

1.1 如果判断的是基本类型,判断的是值是否相等。示例: int a=1, double b=1.0
1.2 如果判断的是引用类型,判断的是地址是否相等,即判定是不是同一个对象

// 判断对象为空
Object obj;
if (obj == null) {}

2.Object方法

String s = null;
if (Objects.isNull(s)) {// true
}
if (Objects.nonNull(s)) {// false
}

源码如下:

3.Optional方法

String s = "debug";
if (Optional.ofNullable(s).isPresent()) {// true
}

源码如下:

二、第三方工具包

1.使用 Apache Commons

1.1  StriingUtils

  • 使用 isEmpty()

    • 当你只关心字符串是否为 null 或完全为空(""),而不在乎它是否包含空格时。
    • 例如,你从某个 API 获取一个可能返回 "" 的 ID 字段,你想知道它是否有值。
  • 使用 isBlank()

    • 当你认为“只有空格的字符串”也等同于“没有输入”或“无效输入”时。
    • 这是更常见、更推荐的用法,尤其是在处理用户输入时。用户在文本框中只输入空格,通常意味着他们没有真正输入内容。
    • 例如,验证用户名、邮箱、地址等表单字段时,应该使用 isBlank() 来防止用户只输入空格就提交。
import org.apache.commons.lang3.StringUtils;String s = " ";
boolean isEmpty = StringUtils.isEmpty(s);  // false, null || length == 0
boolean isBlank = StringUtils.isBlank(s);  // true, null || length == 0 || whitespace only

源码如下:

1.2  CollectionUtils

  • isEmpty() 这个方法非常实用,因为它可以安全地处理 null 值。
  • 如果传入的集合为 null 或者集合本身不为 null 但其中没有任何元素(size() == 0),该方法都会返回 true
  • 这避免了在检查前手动进行 null 判断,使代码更简洁、更安全。
import org.apache.commons.collections.CollectionUtils;List<String> list = new ArrayList();
isEmpty = CollectionUtils.isEmpty(list); // true

源码如下:

1.3 ObjectUtils

  • defaultIfNull()方法中,如果传入的对象为 null,则返回一个指定的默认值;否则返回对象本身
  • 为可能为 null 的对象提供一个安全的默认值,避免后续处理中出现空指针异常。
import org.apache.commons.lang3.ObjectUtils;String name = null;
String safeName = ObjectUtils.defaultIfNull(name, "Unknown");
System.out.println(safeName); // 输出: UnknownString anotherName = "不想debug";
String safeAnotherName = ObjectUtils.defaultIfNull(anotherName, "Unknown");
System.out.println(safeAnotherName); // 输出: 不想debug

总结

实际开发中还是需要根据不同数据类型进行判断,推荐使用第三方工具包。

http://www.dtcms.com/a/466983.html

相关文章:

  • 夜夜做新郎网站在线视频博客社区类网站模板
  • 把自己做的网站进行app封包徐州网站app开发
  • 【驱动】RK3576修改驱动,实现RS485自动收发
  • 唐山建设企业网站wordpress留言本页面
  • 工控机:联结智能生产的工业中枢,如何精准选择?
  • 37.1多点电容触摸屏实验(知识)_csdn
  • 第9章:两条道路的风景:技术与管理的真实世界(1)
  • 合肥做网站汇站网辽宁seo
  • 国内出名网站建设设计公司网站怎么做能提升ip流量
  • MobaXterm远程连接云服务器及配置jdk、Tomcat环境
  • 哪些网站开业做简单海报浙江网上职工之家
  • 基于wifi摄像头与单片机的串口透传及二次开发
  • 手机网站上线左右滑动网站 固定ip
  • 乌克兰网站建设移动端网站构成要素
  • ICLR 2025|SleepSMC:通过监督多模式协调实现普遍的睡眠分期
  • PTA6-15 使用函数实现字符串部分复制(C)
  • 做网站须要什么技术网站建设前的需求分析
  • 华清远见25072班C++学习day7
  • wordpress不用php详细描述如何进行搜索引擎的优化
  • QML学习笔记(三十一)QML的Flow定位器
  • 国防教育网站建设说明书苏州协会网站建设
  • Prompt-tuning、Prefix-tuning、P-tuning/v2
  • 青岛胶南市城乡建设局网站页面效果图
  • vscode连接wsl 连接本地项目
  • 掌握定时器基于GD32F407VE的天空星的配置
  • 补充:计算点到原点的距离。(new)
  • 北京网站建设 专业10年郑州艾特网站建设公司
  • 陕西做网站的公司在哪江苏建设行业证书编号查询网站
  • 元服务发布准备工作
  • 【2025-系统规划与管理师】第七章:网络环境规划