Java中是否存在不等于自身的String? str.equals(str) 什么时候会是 False?
In Java, is there a String that is not equal to itself? When will str.equals(str) be False?
是否有一个字符串
str.equals(str)
是假的?
或者换一种方式:
if(!str.equals(str)){
System.out.println("-1");
}
有什么方法可以让 println
代码行被测试覆盖?
不,不可能。下面是java17中的源代码。可以看到,当两个对象相同时,equals
方法总是returntrue
.
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
return (anObject instanceof String aString)
&& (!COMPACT_STRINGS || this.coder == aString.coder)
&& StringLatin1.equals(value, aString.value);
}
是否有一个字符串
str.equals(str)
是假的?
或者换一种方式:
if(!str.equals(str)){
System.out.println("-1");
}
有什么方法可以让 println
代码行被测试覆盖?
不,不可能。下面是java17中的源代码。可以看到,当两个对象相同时,equals
方法总是returntrue
.
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
return (anObject instanceof String aString)
&& (!COMPACT_STRINGS || this.coder == aString.coder)
&& StringLatin1.equals(value, aString.value);
}