简介
在这个实验中,你将学习如何在 Java 中检查字符串是否为空。你将探索 Java 11 引入的 isBlank()
方法,该方法可以有效地判断字符串是否为空或仅包含空白字符。
通过实际操作示例,你将首先使用 isBlank()
检查各种类型的字符串。然后,你将学习如何将 isBlank()
与空值检查相结合,以实现更健壮的字符串验证。最后,你将比较 isBlank()
和 isEmpty()
的行为,以了解它们的关键区别。
在这个实验中,你将学习如何在 Java 中检查字符串是否为空。你将探索 Java 11 引入的 isBlank()
方法,该方法可以有效地判断字符串是否为空或仅包含空白字符。
通过实际操作示例,你将首先使用 isBlank()
检查各种类型的字符串。然后,你将学习如何将 isBlank()
与空值检查相结合,以实现更健壮的字符串验证。最后,你将比较 isBlank()
和 isEmpty()
的行为,以了解它们的关键区别。
isBlank()
检查空字符串在这一步中,你将学习如何在 Java 中使用 isBlank()
方法来检查字符串是否为空。空字符串是指仅包含空白字符(空格、制表符、换行符)或为空的字符串。
isBlank()
方法是在 Java 11 中引入的,是一种检查空字符串的便捷方式。如果字符串为空或仅包含空白字符,则返回 true
,否则返回 false
。
让我们创建一个简单的 Java 程序来演示 isBlank()
方法。
如果 HelloJava.java
文件尚未在 WebIDE 编辑器中打开,请打开它。
将文件的全部内容替换为以下代码:
public class HelloJava {
public static void main(String[] args) {
String str1 = ""; // 空字符串
String str2 = " "; // 仅包含空格的字符串
String str3 = "Hello"; // 非空字符串
String str4 = " Hello "; // 包含前导/尾随空格的字符串
System.out.println("Is str1 blank? " + str1.isBlank());
System.out.println("Is str2 blank? " + str2.isBlank());
System.out.println("Is str3 blank? " + str3.isBlank());
System.out.println("Is str4 blank? " + str4.isBlank());
}
}
在这段代码中:
str.isBlank()
来检查每个字符串是否为空,并打印结果。保存文件(Ctrl+S 或 Cmd+S)。
现在,让我们编译这个程序。打开 WebIDE 底部的终端,并确保你位于 ~/project
目录中。如果不在该目录中,请使用命令 cd ~/project
。然后,使用 javac
命令编译代码:
javac HelloJava.java
如果没有错误,~/project
目录中将创建一个 HelloJava.class
文件。
最后,使用 java
命令运行编译后的程序:
java HelloJava
你应该会看到以下输出:
Is str1 blank? true
Is str2 blank? true
Is str3 blank? false
Is str4 blank? false
如你所见,isBlank()
正确地将空字符串 (str1
) 和仅包含空格的字符串 (str2
) 识别为空,而 str3
和 str4
被视为非空,因为它们包含非空白字符。
isBlank()
与空值检查相结合在上一步中,你学习了如何使用 isBlank()
方法来检查字符串是否为空或仅包含空白字符。然而,如果字符串变量为 null
,isBlank()
方法会抛出 NullPointerException
异常。在实际应用中,经常会遇到 null
字符串,因此妥善处理它们非常重要。
为了安全地检查字符串是否为 null
或为空,你应该将空值检查与 isBlank()
方法结合使用。最常见的做法是使用 if
语句:
if (str == null || str.isBlank()) {
// 字符串为 null 或为空
} else {
// 字符串不为 null 且不为空
}
让我们修改之前的程序,加入一个 null
字符串,并演示如何处理它。
在 WebIDE 编辑器中打开 HelloJava.java
文件。
将当前代码替换为以下代码:
public class HelloJava {
public static void main(String[] args) {
String str1 = ""; // 空字符串
String str2 = " "; // 仅包含空格的字符串
String str3 = "Hello"; // 非空字符串
String str4 = null; // 空值字符串
System.out.println("Is str1 null or blank? " + (str1 == null || str1.isBlank()));
System.out.println("Is str2 null or blank? " + (str2 == null || str2.isBlank()));
System.out.println("Is str3 null or blank? " + (str3 == null || str3.isBlank()));
System.out.println("Is str4 null or blank? " + (str4 == null || str4.isBlank()));
}
}
在这段更新后的代码中:
null
字符串变量 str4
。str == null || str.isBlank()
来检查每个字符串是否为 null
或为空。||
运算符表示“或”。如果第一部分 (str == null
) 为 true
,则不会检查第二部分 (str.isBlank()
),这样可以避免 NullPointerException
异常。保存文件(Ctrl+S 或 Cmd+S)。
在终端中编译修改后的程序:
javac HelloJava.java
运行编译后的程序:
java HelloJava
你应该会看到以下输出:
Is str1 null or blank? true
Is str2 null or blank? true
Is str3 null or blank? false
Is str4 null or blank? true
这个输出表明,我们的组合检查正确地将空字符串、仅包含空格的字符串和 null
字符串识别为“null
或为空”,而将非空字符串正确识别为“不为 null
且不为空”。
将空值检查与 isBlank()
方法结合使用,是在 Java 程序中处理各种字符串状态的可靠方法。
isBlank()
和 isEmpty()
在前面的步骤中,你已经使用 isBlank()
方法来检查字符串是否为空或仅包含空白字符。你可能也听说过 Java 中的 isEmpty()
方法。在这一步中,我们将比较 isBlank()
和 isEmpty()
,以了解它们之间的区别。
isEmpty()
方法从 Java 1.0 版本开始就已经存在。只有当字符串的长度为 0(即它是一个空字符串 ""
)时,它才会返回 true
。对于任何其他字符串,包括仅包含空白字符的字符串,它都会返回 false
。
让我们最后一次修改我们的程序,同时使用 isBlank()
和 isEmpty()
方法,看看它们在处理不同类型的字符串时的表现。
在 WebIDE 编辑器中打开 HelloJava.java
文件。
将当前代码替换为以下代码:
public class HelloJava {
public static void main(String[] args) {
String str1 = ""; // 空字符串
String str2 = " "; // 仅包含空格的字符串
String str3 = "Hello"; // 非空字符串
String str4 = null; // 空值字符串
System.out.println("--- Using isBlank() ---");
System.out.println("Is str1 blank? " + (str1 == null || str1.isBlank()));
System.out.println("Is str2 blank? " + (str2 == null || str2.isBlank()));
System.out.println("Is str3 blank? " + (str3 == null || str3.isBlank()));
// 注意:在调用 isBlank() 之前仍然需要进行空值检查
System.out.println("Is str4 blank? " + (str4 == null || str4.isBlank()));
System.out.println("\n--- Using isEmpty() ---");
// 注意:在调用 isEmpty() 之前也需要进行空值检查
System.out.println("Is str1 empty? " + (str1 == null || str1.isEmpty()));
System.out.println("Is str2 empty? " + (str2 == null || str2.isEmpty()));
System.out.println("Is str3 empty? " + (str3 == null || str3.isEmpty()));
System.out.println("Is str4 empty? " + (str4 == null || str4.isEmpty()));
}
}
在这段代码中:
isBlank()
和 isEmpty()
的部分。isBlank()
和 isEmpty()
之前,我们都使用了组合的空值检查 (str == null || ...
) 来避免 NullPointerException
。保存文件(Ctrl+S 或 Cmd+S)。
在终端中编译程序:
javac HelloJava.java
运行编译后的程序:
java HelloJava
你应该会看到以下输出:
--- Using isBlank() ---
Is str1 blank? true
Is str2 blank? true
Is str3 blank? false
Is str4 blank? true
--- Using isEmpty() ---
Is str1 empty? true
Is str2 empty? false
Is str3 empty? false
Is str4 empty? true
从输出中,你可以观察到关键区别:
isBlank()
对于空字符串 (""
) 和仅包含空白字符的字符串 (" "
) 都会返回 true
。isEmpty()
仅对于空字符串 (""
) 返回 true
。对于仅包含空白字符的字符串 (" "
),它会返回 false
。在对可能为空的字符串调用这两个方法之前,都需要进行空值检查。
总结如下:
isEmpty()
。isBlank()
。理解这两个方法之间的区别对于在 Java 中编写正确且健壮的字符串处理代码至关重要。
在本次实验中,你学习了如何使用 Java 11 引入的 isBlank()
方法来检查字符串是否为空。你练习了在不同类型的字符串上使用 isBlank()
,包括空字符串、仅包含空白字符的字符串以及有内容的字符串。你还编译并运行了一个简单的 Java 程序,以演示 isBlank()
的功能。