我已阅读此SO帖子:Java, check whether a string is not null and not empty?
出现的问题(并未在该主题中回答)是:
Why is string.isEmpty() better than using string.equals("") ?
在同一个答案中,海报指出,在J6之前,人们会使用string.length == 0
作为检查空字符串的方法。我错过了一些东西,因为它们似乎都做了完全相同的事情......只需要美化你的代码。
答案 0 :(得分:6)
最好用的是
"".equals(yourString)
因为这可以避免空指针异常。
如果您使用
string.equals("")
如果你的字符串为null,它将抛出一个空指针异常。
再次isEmpty
的问题是
当且仅当length()为0
时,返回true
因此,如果您的字符串为空,它也会导致NPE。
答案 1 :(得分:4)
为什么string.isEmpty()比使用string.equals(“”)更好?
只需查看String#isEmpty()
的来源:
public boolean isEmpty() {
return count == 0;
}
它只返回将count
变量存储为类的一部分与0
的结果。没有繁重的计算。价值已经存在。
然而,String.equals()
方法进行了大量计算,即类型转换,引用比较,长度比较 - {{ 3}}。因此,为了避免这些运行时操作,您只需使用isEmpty()
来检查空字符串。
不过,这会有点慢一点。
注意: Oracle {7}的Java 7版本使用String.isEmpty()
,因为它{{3} } value.length == 0
和count
变量。但是,在 openjdk-7 中,它仍然使用offset
变量。
但是,count
计算会比value.length
方法中的所有操作快一点。
除了性能差异,这实际上并不是很重要,如果差异很小,equals()
方法似乎更清楚你的意图。所以,我更喜欢使用该方法来检查空字符串。
最后,当然,不相信你所看到的。只需使用这两种方法对您的代码进行基准测试,并查看是否有任何可衡量的差异。
答案 2 :(得分:3)
isEmpty()
的号召更能表达您的意图,从而提高可读性。读者花更少的时间来理解你在检查背后的意图:不是认为你有兴趣检查字符串的相等性或确定它的长度,他们就会发现你想要知道的只是字符串是否为空。
没有性能差异,因为通过检查长度来实现isEmpty()
。
答案 3 :(得分:1)
答案 4 :(得分:0)
有很多方法可以得到一个答案,一切都取决于编程语言以及如何编程。
例如C#:
if (String.IsNullOrEmpty(s))
return "is null or empty";
答案 5 :(得分:0)
使用apache commons提供的util方法
如果您觉得自己甚至可以编写自己的isEmpty(String input)方法
这种方法具有以下优点 它使你的意图清晰 在空值的情况下你是安全的。