Vergleichen von Strings (Java)
Strings werden nicht wie primitive Datentypen mit dem "==" Operator verglichen!
Strings sind Objekte, die mit der Methode Object#equals(Object obj) verglichen werden.
Wenn man sie mit "==" vergleicht, wird nicht der Inhalt der Objekte, sondern die Referenz auf das Objekt selbst verglichen.
public class Test {
public static void main(String[] args) {
String a = new String("blabla");
String b = new String("blabla");
String c = b;
String d = "blabla";
System.out.println(a.equals(b) ? "a equals b" : "a not equals b");
System.out.println(a == b ? "a == b" : "a != b");
System.out.println(c == b ? "c == b" : "c != b");
System.out.println(c == b ? "a == d" : "a != d");
System.out.println(a.equals(d) ? "a equals d" : "a not equals d");
System.out.println(c == d ? "c == d" : "c != d");
}
}
Ausgabe:
a equals b
- weil der Text der beiden String Objekte identisch ista != b
- weila
undb
nicht auf das gleiche Objekt zeigenc == b
- weilc
undb
auf das gleiche Objekt zeigena == d
- Java legt für Strings intern einen String-Pool an. Wenn ein String sich wiederholt, wird kein neues Objekt erzeugt, sondern das bekannte aus dem Stringpool wiederverwendet.a
undd
zeigen also auf das gleiche Objekt im Poola equals d
- weil der Text der beiden String Objekte identisch istc != d
- weilc
undd
nicht auf das gleiche Objekt zeigen
Wenn irgendwo ein String vorkommt, wird er in einem Stringpool gespeichert. Wenn er dann nochmal vorkommt, wird kein neues Stringobjekt erstellt, sondern das alte wiederverwendet.
Fragen
Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!
- Besuche uns im Byte-Welt-Forum
- Besuche unseren Chat
Wir helfen dir gerne!
Dir hat dieser Artikel gefallen? Oder Du hast Fehler entdeckt und möchtest zur Berichtigung beitragen? Prima! Schreibe einen Kommentar!
Du musst angemeldet sein, um einen Kommentar abzugeben.