如果我们使用use length()而不是equals()来检查java中的空字符串,那么代码优化是否存在差异?
public boolean isEmpty(String str)
{
return str.equals(""); //NEVER do this
}
public boolean isEmpty(String str)
{
return str.length()==0; //Correct way to check empty
}
是真的吗?
答案 0 :(得分:4)
您可以使用str.isEmpty()
,在内部检查长度。
这是String
类的实现:
public int length() {
return count;
}
public boolean isEmpty() {
return count == 0;
}
您可以看到isEmpty()
将长度与0进行比较。
答案 1 :(得分:1)
是的,至少在OpenJDK 64-Bit Server VM
检查长度更快。根据我的测量结果,66%
检查equals("")
的时间仅为length() == 0
。{/ p>
话虽如此,您的计划效率低下几乎肯定存在于其他地方。
内置的isEmpty
是个不错的选择。