如何在Java中检查null?

2025年8月4日 | 阅读14分钟

在Java中,null 是一个字面量。它主要用于为变量赋空值。字符串、对象或日期时间等可以为空。我们不能将空值赋给原始数据类型,如 int、float 等。

检查 null 是一个常见的任务,它确保您的程序能够顺利运行,而不会遇到 NullPointerException,而 NullPointerException 通常发生在我们尝试使用尚未初始化的对象引用时。

在编程中,通常我们需要检查一个对象或字符串是否为 null,以便对其执行某些任务。为了检查 null 字符串,我们有一些 String 类的预定义方法。让我们看一些不同数据类型的示例,以了解如何检查它们是否为 null。

检查 null 字符串

在Java中,字符串可以为 null、空或仅包含空格,它们 each 都是不同的。

1. 空字符串是一个字符串对象,具有某个值,但其长度等于零。例如:

2. 仅包含空格的字符串是一个其值为空格的字符串。其长度始终大于 0,既不为空也不为 null。例如:

3. null 字符串没有值,通过将 null 关键字作为值赋给它来使字符串为 null。例如:

为了检查字符串是否为 null,我们使用比较运算符 (==)。让我们看一个示例,了解如何使用它进行 null 检查。

NullCheckExample1.java

输出

How to Check null in Java

使用 isEmpty() 方法在 Java 中检查 null

在 Java 中,isEmpty() 方法用于检查字符串或集合是否为空,但它不验证对象是否为 null。为了防止 NullPointerException,在使用 isEmpty() 方法之前,首先确保对象不是 null 至关重要。

文件名: NullOrEmptyCheck.java

输出

The string is not null and not empty. It contains: Hello, World!
The string is either null or empty.

使用 equals() 方法检查字符串是否为 null 或空

Java 中的 equals() 方法用于比较两个字符串的内容是否相等,而不是检查 null 值。为了防止 NullPointerException,在对字符串调用 equals() 之前,始终使用 == null 进行 null 检查。这确保了字符串比较安全且无错误。

文件名: StringNullEmptyCheck.java

输出

str1 is either null or empty.
str2 is either null or empty.
str3 is neither null nor empty.

使用 (!= null) 在 Java 中检查 null

!= null 检查是用于在尝试访问其属性或方法之前验证对象引用不是 null 的一种直接技术。这种简单而有效的检查对于维护代码安全至关重要,因为它防止代码尝试对不指向任何对象的引用执行操作。

文件名: NullCheckDemo.java

输出

The string is: Hello, World!
The string is null.

使用 Apache Commons Lang 库

Apache Commons Lang 库的 StringUtils 类提供了一系列对字符串操作的 null 安全的实用方法,简化了检查空、修剪和比较字符串等任务。它通过精简常见的字符串操作来提高 Java 应用程序中的代码可读性和效率。

文件名: EnhancedStringCheckExample.java

输出

text1 is empty or null
text2 is empty or null
text3 is blank

使用 Java 11 isBlank() 方法

isBlank() 方法是 String 类在 Java 中的一个有用补充,用于评估字符串是否为空白。如果字符串为空或仅包含空格字符,则该方法返回 true,比简单的 isEmpty() 方法提供了更细致的检查。

文件名: StringCheckJava11Example.java

输出

text1 is empty or null
text2 is empty or null
text3 is blank
text4 is not empty, null, or blank. It is: Goodbye, Hello!

日期和日期时间对象

Date 和 DateTime 都是非原始数据类型,因此它们可以存储 null 值。让我们以日期和时间对象为例,了解如何检查 null 日期或 datetime 对象。

NullCheckExample2.java

输出

How to Check null in Java

类 Optional<LocalDate>

Java 中的 Optional<LocalDate> 是一个容器,可以持有 LocalDate 或为空,它提供了比使用 null 处理缺失值更清晰、更安全的方式。作为 Java 8 改进的一部分,它鼓励显式处理日期的存在或缺失,从而降低 NullPointerException 的风险并提高代码的可读性。

使用 if-else 语句

在 Java 中,使用 Optional<LocalDate> 类的 if-else 语句提供了一种结构化的方法来处理可能存在或不存在的日期,从而避免了 null 引用的陷阱。Optional 是 Java 8 中引入的 java.util 包中的一个容器类,它可以包含 LocalDate 类型的值或为空,表示缺少日期值。

语法

文件名: CheckNullDateExample.java

输出

The Date object is null.

使用 (=) 运算符

将赋值 (=) 运算符与 Optional<LocalDate> 结合使用涉及将一个 Optional 实例赋给另一个。这会分配 Optional 对象的引用,而不是其中的 LocalDate 值。这类似于分配对象引用。此操作有助于管理 Optional 实例,以比 null 检查更安全的方式指示 LocalDate 值的存在或缺失。

检查日期是否为 null

检查日期是否不为 null

文件名: CheckAndAssignDateExample.java

输出

The Date object is null.

Java 对象

为了检查 Java 对象是否为 null,我们可以使用 Objects 类的 isNull() 方法或比较运算符。让我们看一个示例,了解如何使用 isNull() 方法或比较运算符对 Java 对象进行 null 检查。

方法 1

Java 中的比较运算符 == 是一个二元运算符,用于比较两个操作数。当涉及到对象引用时,== 运算符会检查两个操作数是否指向内存中的同一个对象,而不是比较对象中存储的实际内容或值。在 null 检查的上下文中,== 用于直接将对象引用与 null 进行比较,以确定引用是否未指向任何对象。

NullCheckExample3.java

输出

How to Check null in Java

方法 2

isNull() 方法是 java.util.Objects 类的一部分,该类在 Java 8 中引入。它是一个静态方法,接受一个参数,如果提供的引用为 null,则返回 true,否则返回 false。

NullCheckExample4.java

输出

How to Check null in Java

方法 3

nonNull() 方法也是 java.util.Objects 类的一个成员,它作为 isNull() 的逻辑补充。它检查提供的对象引用是否不是 null。如果引用指向一个对象,则该方法返回 true,如果为 null,则返回 false。

文件名: NullCheckExample3.java

输出

Object is Null

方法 4

requireNonNull() 方法是 java.util.Objects 类的另一个实用方法。它旨在检查对象是否为 null,并在其为 null 时抛出带有可选自定义消息的 NullPointerException。此方法通常在方法的开头使用,以验证参数不为 null,从而确保对象在进一步执行流程之前满足某些非 null 标准。

文件名: NullCheckExample5.java

输出

Object is Null

下一个主题Final-class-in-java