Java中isEmpty()和isBlank()之间的区别

String.isEmpty():如果String为空,则isEmpty()方法返回 true 。否则,返回 false。

Java 11 中引入的isBlank  ()方法与isEmpty()相同,但细微差别在于它对于 仅包含空白字符的字符串也返回 true 。
Java 中被视为空白字符的五个字符是\s(空格)以及\t、\n、\r 和 \f转义序列。
isBlank()方法内部会搜索第一个非空白字符的索引。如果没有非空白字符,则该索引将等于数组的长度。最后,它将该索引与字节数组的长度进行比较以输出正确的答案。

@Test
public void givenString_whenCallStringIsBlank_thenReturnCorrectValues() {
    assertFalse("Example text".isBlank());
    assertTrue(
"".isBlank());
    assertTrue(
"  ".isBlank());
    assertTrue(
"\t\n\r\f ".isBlank());
}

  • 第二个字符串不包含任何字符,因此isBlank()返回true。
  • 第三行的String只有空白字符,因此isBlank()返回true。
  • 最后一行中的字符串包含所有被视为空格的转义序列字符。因此,在这种情况下, isBlank()也会返回 true。

在 Java 11 之前,开发人员通常使用String.trim()和 String.isEmpty()的组合 来验证文本是否仅包含空格字符。但是,正如我们在本教程中看到的,在使用 Java 11 或更高版本的应用程序中,我们可以简化为仅使用String.isBlank()。