标题基本上都说明了一切.我通常在一起测试这个string == null,所以我并不真正关心一个零安全测试.我应该使用哪个?
String s = /* whatever */;
...
if (s == null || "".equals(s))
{
// handle some edge case here
}
Run Code Online (Sandbox Code Playgroud)
要么
if (s == null || s.isEmpty())
{
// handle some edge case here
}
Run Code Online (Sandbox Code Playgroud)
在那个笔记 - isEmpty()甚至做除了return this.equals("");或以外的任何事情return this.length() == 0;?
Mic*_*zek 246
主要的好处"".equals(s)是你不需要 null检查(equals将检查它的参数并返回false它是否为null),你似乎并不关心.如果你不担心s是否为空(或以其他方式检查它),我肯定会使用s.isEmpty(); 它显示了您正在检查的内容,您关心的是否s为空,而不是它是否等于空字符串
Dav*_*ung 81
String.equals("")实际上比isEmpty()调用慢一点.字符串存储在构造函数中初始化的计数变量,因为字符串是不可变的.
isEmpty() 将count变量与0进行比较,而equals将检查类型,字符串长度,然后迭代字符串以进行比较(如果大小匹配).
所以回答你的问题,isEmpty()实际上会少做很多!这是一件好事.
Fab*_*eeg 17
除了提到的其他问题之外,您可能还需要考虑的一件事是isEmpty()1.6中引入的,因此如果您使用它,您将无法在Java 1.5或更低版本上运行代码.
Coo*_*ans 14
您可以使用apache commons StringUtils isEmpty()或isNotEmpty().