Java中判断String类型为空和null的方法
前言
在Java编程中,字符串操作是非常常见的任务。判断一个字符串是否为空或为 null是避免 NullPointerException和确保代码正确性的重要步骤。本文将详细介绍几种判断字符串为空和 null的方法,帮助开发者在不同场景中选择最合适的解决方案。

基本方法
方法一:使用==和isEmpty()
最基本的方法是使用 ==运算符和 isEmpty()方法。这种方法非常直观,但需要两步检查。
public boolean isNullOrEmpty(String str) {
return str == null || str.isEmpty();
}
方法二:使用trim()和isEmpty()
在有些场景中,字符串可能包含空格字符。可以使用 trim()方法去除空格,然后检查是否为空。
public boolean isNullOrEmptyOrWhitespace(String str) {
return str == null || str.trim().isEmpty();
}
使用工具类
方法三:Apache Commons Lang
Apache Commons Lang库提供了一个实用的工具类 StringUtils,可以简化字符串的空检查。
import org.apache.commons.lang3.StringUtils;
public boolean isNullOrEmptyUsingCommons(String str) {
return StringUtils.isEmpty(str);
}
处理空白字符串
StringUtils还提供了处理空白字符串的方法。
import org.apache.commons.lang3.StringUtils;
public boolean isNullOrWhitespaceUsingCommons(String str) {
return StringUtils.isBlank(str);
}
方法四:Spring Framework
Spring框架中的 StringUtils类也提供了类似的功能。
import org.springframework.util.StringUtils;
public boolean isNullOrEmptyUsingSpring(String str) {
return !StringUtils.hasLength(str);
}
public boolean isNullOrWhitespaceUsingSpring(String str) {
return !StringUtils.hasText(str);
}
Java 11中的新方法
方法五:isBlank()
在Java 11中,String类引入了一个新方法 isBlank(),用于检查字符串是否为空白。
public boolean isNullOrBlankUsingJava11(String str) {
return str == null || str.isBlank();
}
综合示例
以下是一个综合示例,展示了如何在不同场景中使用这些方法:
public class StringCheckUtils {
// 基本方法
public static boolean isNullOrEmpty(String str) {
return str == null || str.isEmpty();
}
public static boolean isNullOrEmptyOrWhitespace(String str) {
return str == null || str.trim().isEmpty();
}
// Apache Commons Lang方法
public static boolean isNullOrEmptyUsingCommons(String str) {
return StringUtils.isEmpty(str);
}
public static boolean isNullOrWhitespaceUsingCommons(String str) {
return StringUtils.isBlank(str);
}
// Spring Framework方法
public static boolean isNullOrEmptyUsingSpring(String str) {
return !StringUtils.hasLength(str);
}
public static boolean isNullOrWhitespaceUsingSpring(String str) {
return !StringUtils.hasText(str);
}
// Java 11方法
public static boolean isNullOrBlankUsingJava11(String str) {
return str == null || str.isBlank();
}
public static void main(String[] args) {
String str1 = null;
String str2 = "";
String str3 = " ";
System.out.println("Using basic methods:");
System.out.println(isNullOrEmpty(str1)); // true
System.out.println(isNullOrEmpty(str2)); // true
System.out.println(isNullOrEmptyOrWhitespace(str3)); // true
System.out.println("Using Apache Commons Lang:");
System.out.println(isNullOrEmptyUsingCommons(str1)); // true
System.out.println(isNullOrWhitespaceUsingCommons(str3)); // true
System.out.println("Using Spring Framework:");
System.out.println(isNullOrEmptyUsingSpring(str1)); // true
System.out.println(isNullOrWhitespaceUsingSpring(str3)); // true
System.out.println("Using Java 11:");
System.out.println(isNullOrBlankUsingJava11(str1)); // true
System.out.println(isNullOrBlankUsingJava11(str3)); // true
}
}
分析说明表
| 方法 | 使用场景 | 示例代码 | 优点 | 缺点 |
|---|---|---|---|---|
| == 和 isEmpty() | 基本空检查 | str == null | | str.isEmpty() |
||
| trim() 和 isEmpty() | 检查空白字符 | str == null | | str.trim().isEmpty() |
||
| Apache Commons Lang | 使用外部库简化空检查 | StringUtils.isEmpty(str) |
功能丰富,代码简洁 | 需要引入外部库 |
| Apache Commons Lang | 检查空白字符 | StringUtils.isBlank(str) |
功能丰富,代码简洁 | 需要引入外部库 |
| Spring Framework | 使用Spring框架简化空检查 | !StringUtils.hasLength(str) |
集成Spring框架,功能丰富 | 需要引入Spring框架 |
| Spring Framework | 检查空白字符 | !StringUtils.hasText(str) |
集成Spring框架,功能丰富 | 需要引入Spring框架 |
| Java 11 isBlank() | 使用Java 11新特性 | str == null | | str.isBlank() |
结论
判断字符串是否为空或为 null是Java编程中常见的需求。本文介绍了几种方法,包括基本方法、使用外部库和Java 11新特性等。根据实际场景和需求,选择最合适的方法可以提高代码的可读性和健壮性。希望本文能帮助你在开发中更高效地处理字符串空值检查。


