Java中是否存在不等于自身的String?str.equals(str) 什么时候会为 False?

Cal*_*rma 3 java

是否有一个字符串 str.equals(str)是 False?

或者以另一种方式:

if(!str.equals(str)){
    System.out.println("-1");
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以让println测试覆盖该代码行吗?

小智 10

不,不可能。这是java 17中的源代码。正如你所看到的,当两个对象相同时,该equals方法总是返回true

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);
}
Run Code Online (Sandbox Code Playgroud)