isEmpty()和zero length的区别

11

这两种方法之间有什么区别?

public boolean nameControl(String str) 
{
    if (str.trim().isEmpty()) return false;
    if (str.trim().length() == 0) return false;
    return true;
}

我需要找出str字符串至少应该有一个字符。


你试过了吗?你看过源代码了吗?你看过Javadoc了吗? - Sotirios Delimanolis
@SotiriosDelimanolis 它返回 false。 - Sajad
isEmpty() 检查字符串的长度是否为0。 - Rahul Tripathi
没有什么不同,只是一个明确地进行了检查,而isEmpty在幕后执行相同的操作。 - BlackBox
2
看起来大约有5个字符的代码空间。 - nhgrif
1
如果您的主要问题是如何检查字符串是否为空,则Checking for empty strings可能是一个重复的问题。您还可能对Should I use string.isEmpty() or “”.equals(string)?感兴趣。 - Joshua Taylor
6个回答

19

它们之间没有真正的区别。

isEmpty() 的Javadocs

如果length()等于0,则返回true。


4

Javadoc 中得知:

isEmpty

public boolean isEmpty()

如果 length() 为 0,则返回 true。


4

适用于Java 6+

isEmpty() 方法适用于Java 6,而length == 0 方法适用于Java 1.2+或更早版本。

如果您注意到,方法的实现是这样的:

Apache Commons Lang (适用于Java 5+)

public static boolean isEmpty(String str) 

来自Apache Commons Langorg.apache.commons.lang.StringUtils类使用str.length() == 0来支持Java 5.0+。



0

想在此更新一下:

我注意到如果字符串中有换行符(\n或\r),那么length函数将不会返回零值,但isEmpty函数将返回预期的true值


0
如果您需要检测一个字符串是否至少有一个(非空格)字符,我建议尝试以下代码:
public boolean nameControl(String str) {
    if (str == null) return false;
    else if (str.trim().length() == 0) return false;
    return true;
}

如果一个只包含空格的字符串应该返回 true,我会按照以下方式移除 trim
public boolean nameControl(String str) {
    if (str == null) return false;
    else if (str.length() == 0) return false;
    return true;
}

根据定义,任何形式的空格符都是一个字符,不是吗? - Obicere
根据原帖中对于 trim 的使用,我做出了一个假设:一个只包含空格的字符串应该返回 false。我已经更新了答案以反映这两种情况。 - Christopher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接