哪些字符串是空的?

时间:2014-02-11 11:12:01

标签: java string special-characters is-empty

在JDK文档中,它声明String方法isEmpty()对于任何长度为0的字符串都是真的。

对于空字符串"",这显然是正确的。

是否还有其他字符串?我测试过换行符和回车符,它们有一个长度。我还没有用附加的退格键测试字符。


编辑:我很欣赏以下所有优秀答案中的所有其他信息,但我已经接受了我认为最直接的答案。

6 个答案:

答案 0 :(得分:8)

长度为0的字符串包含0个字符。所以不,除了空字符串外,没有其他字符串是空的。

答案 1 :(得分:8)

“长度为零的字符串”表示字符串根本不包含任何字符,包括不可见,零宽度等Unicode字符。

因此,如果一个字符串的屏幕表示完全为空白且零宽度,如果它包含一个字符,则该字符串仍然是非空的。

答案 2 :(得分:4)

请参阅implementation

670     public boolean isEmpty() {
671         return count == 0;
672     }

其中count是字符串中的字符数。

只有当字符串中没有字符时才会出现这种情况,只有""

答案 3 :(得分:2)

apaches commons org.apache.commons.lang3.StringUtils class

中有两个有用的方法

isBlank(CharSequence cs)

检查CharSequence是否为空格,为空(“”)或为空。

isEmpty(CharSequence cs)

检查CharSequence是否为空(“”)或为空。

如果您不想重新发明轮子,也许这就是您正在寻找的东西。

答案 4 :(得分:2)

从Java 1.6 onwords String.isEmpty()可以使用。它比String.equals("")调用快。字符串存储在构造函数中初始化的计数变量,因为字符串是不可变的。

isEmpty()将count变量与0进行比较,而equals将检查类型,字符串长度,然后迭代字符串以进行比较(如果大小匹配)。

来自javadoc的

-

public boolean isEmpty()
Returns true if, and only if, length() is 0.
Returns:
true if length() is 0, otherwise false
Since:
1.6

答案 5 :(得分:1)

来自JavaDoc

  

String#isEmpty()当且仅当length()为时,才会返回true   0

因此,没有其他情况isEmpty()将返回true