Vergleichsmethode | Inhalt |
---|---|
equals | Speicherbereichsvergleich |
== | Wertevergleich |
public class MyApp {
public static void main(String[] args) {
String s1 = "ab"; //Speicherbereich speichern
String s2 = "ab"; //Speicherbereich speichern (gleicher Bereich wie oben)
if(s1.equals(s2)) { //Vergleichen Sie, ob der Inhalt gleich ist
System.out.println("same1 equals");
}
if(s1 == s2) { //Vergleich grundlegender Datentypen
System.out.println("same2 ==");
}
//String-Objekt generieren (mit der Methode equals)
String ss1 = new String("ab"); //Speicherung des Speicherbereichs
String ss2 = new String("ab"); //Speicherung des Speicherbereichs (erstellen Sie einen weiteren Bereich von oben)
//Vergleich grundlegender Datentypen
if(ss1 == ss2) { //Da der Speicherbereich verglichen wird, ist er falsch und wird nicht ausgeführt.
System.out.println("same3 ==Objekt");
}
//Vergleich der Dateninhalte
if(ss1.equals(ss2)) {
System.out.println("same4 ist gleich Objekt"); //Wird ausgeführt, weil der Speicherbereich unterschiedlich ist, der Wert jedoch gleich ist
}
}
}
same1 equals
same2 ==
same4 ist gleich Objekt
In der Zeichenfolge, die ursprünglich ein Referenztyp ist, wird die Position des Speicherbereichs des Referenzziels in der Variablen gespeichert.
Und im Beispiel wird s1 und s2 dieselbe Zeichenfolge "ab" zugewiesen, aber die Position des Speicherbereichs wird in s1 eingegeben, und s2 wird dieselbe Zeichenfolge zugewiesen, also derselbe Speicher Es scheint, dass der Standort des Gebiets enthalten sein wird. Mit anderen Worten
String s1 = "ab";
String s2 = s1;
Gleiche Bedeutung wie? werden.
Wenn ich es versuche
same1 equals
same2 ==
same4 ist gleich Objekt
String s1 = "ab";
String s2 = s1;
s2 = "cd";
Was passiert, wenn Sie ... leicht zu verstehen
System.out.println("s1: " + s1);
System.out.println("s2: " + s2);
Und Renn.
s1: ab
s2: cd
same4 ist gleich Objekt
Nur s2 wurde geändert und spiegelt sich nicht in s1 wider.
Apropos, die Zeichenfolge verhält sich genauso wie der Basisdatentyp und genauso wie der Int-Typ. .. ..
Bedeutet dies, dass dasselbe Referenzziel erstellt wird, während die Werte identisch sind, und ein neuer Speicherbereich erstellt wird, wenn die Werte aktualisiert werden?
Es ist kompliziert, aber ich habe es versucht und wieder verstanden.
Wenn es sich um ein Array handelt, werden beide Werte aktualisiert. Bewertung Bewertung!
Recommended Posts