Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的字符串比较顺序_Java_String_Coding Style - Fatal编程技术网

Java中的字符串比较顺序

Java中的字符串比较顺序,java,string,coding-style,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) {

以下两种字符串比较方法是否被视为相等

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);
    }
}

或者一种类型的比较应该优于另一种类型?

后者的一个优点是,如果
testVal
为空,它不会引发异常

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

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

您应该对常量调用equals,因为它避免了当
testVal
为null时出现NullPointerException的风险

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

当一个常量值将自身与另一个值进行比较时,几乎可以肯定不会有空值

就你而言

new TestString().testString1(null);
将引发异常,而

new TestString().testString2(null);
习惯


但是这种符号可以被认为是

乍一看,我同意@Jon Skeet,但后来我注意到,consval并不是最终的


如果它是final,那么testString2()是测试相等性的最安全和最好的方法。

我的错误是,我应该将final添加到const val中