a.equalsIgnoreCase(b) ist a == b ?

?

_________

Gast
Hallo liebe Java-Freunde,

ich wundere mich gerade über die Implementierung der equalsIgnoreCase-Methode. Warum funktioniert der folgende Code?
Java:
public boolean equalsIgnoreCase(String aString){
    return this == aString;
}
Ich dachte bislang, mit dem einfachen == wird überprüft, ob die Objekte identisch sind, also an der gleichen Speicherstelle stehen. Wie können denn zwei möglicherweise verschiedene Strings ("aA", "aa" sind verschieden, equalsIgnoreCase liefert aber true zurück) an der gleichen Speicherstelle stehen?

Ich bin jetzt etwas verwundert ;)

Liebe Grüße
 
?

_________

Gast
Okay, hat sich erledigt, sorry. Ist wohl zu spät :)

Der Code stammt, wie ich gerade gesehen habe, von JD-gui. Im "richtigen" Source steht eine verständliche Implementierung. Bitte korrigiert mich, wenn der JD-Code trotzdem irgendeinen Sinn ergibt.
 
G

Gast2

Gast
Wie kommst du an den Codefetzen?
Die Methode equalsIgnoreCase schaut in der Java7 API so aus:
Java:
public boolean equalsIgnoreCase(String anotherString) {
  return (this == anotherString) ? true :
    (anotherString != null) && (anotherString.count == count) &&
    regionMatches(true, 0, anotherString, 0, count);
}
 
T

tröööt

Gast
wo bitte hast du diesen code her ?

java.lang.String.equalsIgnoreCase(String) ist so implementiert
Java:
public boolean equalsIgnoreCase(String anotherString) {
        return (this == anotherString) ? true
                : (anotherString != null)
                && (anotherString.value.length == value.length)
                && regionMatches(true, 0, anotherString, 0, value.length);
    }
 

Oben