Java中的字符串比较顺序

Pra*_*ram 5 java string coding-style

以下两种字符串比较方法都被认为是相同的

public class TestString {
    public static final String CONSTVAL="foo";

    public boolean testString1(String testVal) {
        return testVal.equalsIgnoreCase(CONSTVAL);
    }

    public boolean testString2(String testVal) {
        return CONSTVAL.equalsIgnoreCase(testVal);
    }
}
Run Code Online (Sandbox Code Playgroud)

或者是否应该优先考虑一种比较?

Jcs*_*Jcs 18

您应该在常量上调用equals,因为它在testValnull 时避免了NullPointerException的风险.

public boolean testString2(String testVal) {
    return CONSTVAL.equalsIgnoreCase(testVal);
}
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 5

后者的一个优点是如果testVal为null 则不会抛出异常.

我希望结果是相同的,除此之外.