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