Java字符串中的高效

jua*_*ead 0 java

这句话是平等的myString != null,myString.length() > 0而且! myString.equals("") ?哪个是效率最高的?(Java 1.4)

Mar*_*ers 8

这些并非都是等价的 - 空引用与空字符串不同.

空测试可能是最有效的,因为所有其他测试至少需要首先找出引用是否为空.

找出最好的方法是衡量绩效:

public static void main(String[] args)
{
    String myString = "foo";
    int a = 0;
    for (int i = 0; i < 100000000; ++i)
    {
        //if (myString != null)
        //if (myString.length() > 0)
        if (!myString.equals(""))
        {
            a++;
        }
    }
    System.out.println(a);
}
Run Code Online (Sandbox Code Playgroud)

结果:

myString != null      : 0.61s
myString.length() > 0 : 0.67s
!myString.equals("")  : 2.82s

因此,空测试和长度测试花费的时间几乎相同,但使用空字符串测试相等性的时间要长四倍以上.请注意,我测试的Java版本比您使用的版本略高,因此您应该自己运行测试以查看是否获得相同的结果.