Java Strings vergleichen mit == und .equals?
Ein String ist in Java ein Klasse.
Neue String-Objekte, bzw. Referenzvariablen können einfach per Zuweisung erzeugt werden
String str3 = "iwas";
String str4 = "iwas"
statt String strx = new String("...");
str3 und str4 sind doch nun zwei verschiedene Referenzvariablen.
Mit str3.equals(str4) vergleicht man den Inhalt der Strings. true klar!
Schreibt man nun
System.out.println(str4==str3);
kommt auch true heraus. D. h. str4 und str3 sind zwei verschiedene Referenzvariablen, die auf das selbe Objekt im Speicher "iwas" verweisen?
Deshalb true?
String str5 = new String("iwas");
System.out.println(str3==str5);
Hier kommt jetzt false heraus?
2 Antworten
Str3 und Str4 verweisen auf das selbe Objekt.
class StringStorage {
public static void main(String args[])
{
String s1 = "TAT";
String s2 = "TAT";
String s3 = new String("TAT");
String s4 = new String("TAT");
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
}
}
Quelle:
in deiner situation hätte ich wohl nach "how do strings work in java" gesucht. da findest du dann auch genau die seite verlinkt wurde
Wenn ich z. B. ne Erklärung für Array.Lists Maps oder Generics brauche in Java
Selbes Spiel How do an Array.List work in Java....
jo zb.
mit der zeit merkst du dann auch welche seiten gut sind und welche schlecht
falls du nichts hilfreiches findest musst du halt etwas rumprobieren mit den suchbegriffen
hauptsache immer auf englisch googeln
Kannst du mir bestimmte Seiten empfehlen die "gut" sind?
puh, bei java eher weniger aber geeksforgeeks is meistens schon mal ok
sonst noch die offiziellen java docs aber da ist es dann schon sehr technisch und stackoverflow ist natürlich auch immer gold wert
Tatsächlich wusste ich die Antwort aber hab ne Quelle im Internet gesucht. Dafür hab ich hier einfach das Problem zusammengefasst. Es geht darum was macht == und was macht .equals. Denn wenn ich weiß was der Unterschied ist, dann weiß ich auch was die Antwort ist. Und und wenn man nichts gutes findet, dann einfach eingrenzen. Und es hilft auch die Sachen auf englisch zu Googlen. Zumindest finde ich dass. Was auch eine Option ist, mit Chat gpt zu arbeiten. Da schilderst du dein Problem, und fragst nach einer such query z.b.:
Frage: Give a search term that gives the Google results for finding an answer to this problem: why is with String s1 =„1“; String s2 = „1“; String s3 = new String(„1“); String s4 = new String(„1“); s1==s2 true and s1.equals(s2) = true but not s3==s4
Antwort: Java string comparison and object equality
Man kann die Frage noch ein bisschen abändern, aber im Prinzip ist das ein guter Anfang um zu lernen wie man Google. Was übrigens sehr viele nicht können.
Vielen Dank für eure Hilfe. Tyldu und Computihack
Moin,
mit new String erzeugst du ein neues String-Objekt, das seinen eigenen Platz im Arbeitsspeicher hat. Du überprüfst dann mit ==, ob es sich um dasselbe Objekt handelt und nicht, ob es sich um denselben Inhalt handelt.
LG Der1Streber
Ok. Danke. Wenn du so ne Fragestellung hast, wo du nicht weiterkommst. Wie findest du hierzu schnelle eine Lösung im Netz. Bist du jetzt einfach die Seite gegangen und hast das Problem eingegeben?