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中