length()而不是equals()来检查java中的空字符串

时间:2015-04-01 08:57:38

标签: java optimization

如果我们使用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
}

是真的吗?

2 个答案:

答案 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是个不错的选择。