Vergleichen von Strings (Java): Unterschied zwischen den Versionen
Aus Byte-Welt Wiki
KKeine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
| (8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
Strings werden '''nicht''' wie primitive Datentypen mit dem "==" Operator verglichen!<br> | Strings werden '''nicht''' wie primitive Datentypen mit dem "==" Operator verglichen!<br> | ||
Strings sind Objekte, die mit der Methode [ | Strings sind [[Objekt|Objekte]], die mit der [[Methode]] [https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object- Object#equals(Object obj)] verglichen werden.<br> | ||
Wenn man sie mit "==" vergleicht, wird nicht der Inhalt der Objekte, sondern die Referenz auf das Objekt selbst verglichen. | '''Wenn man sie mit "==" vergleicht, wird nicht der Inhalt der Objekte, sondern die [[Referenz]] auf das Objekt selbst verglichen.''' | ||
<syntaxhighlight lang="java">String a = new String("blabla"); | <syntaxhighlight lang="java"> | ||
String b = new String("blabla"); | public class Test { | ||
String c = b; | 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(a == d ? "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"); | |||
} | |||
} | } | ||
</syntaxhighlight> | |||
Ausgabe:<br> | Ausgabe:<br> | ||
*<code>equals</code> - weil der Text der beiden String Objekte identisch ist< | *<code>a equals b</code> - weil der Text der beiden String Objekte identisch ist | ||
*<code> | *<code>a != b</code> - weil <code>a</code> und <code>b</code> nicht auf das gleiche Objekt zeigen | ||
*<code>c == b</code> - weil <code>c</code> und <code>b</code> auf das gleiche Objekt zeigen | |||
*<code>a == d</code> - 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 String-Pool wiederverwendet. <code>a</code> und <code>d</code> zeigen also auf das gleiche Objekt im Pool | |||
*<code>a equals d</code> - weil der Text der beiden String Objekte identisch ist | |||
*<code>c != d</code> - weil <code>c</code> und <code>d</code> nicht auf das gleiche Objekt zeigen | |||
{{Fragen stellen}} | {{Fragen stellen}} | ||
[[Kategorie:Java Grundlagen]] | [[Kategorie:Java Grundlagen]] | ||
Aktuelle Version vom 24. April 2020, 16:21 Uhr
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(a == d ? "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- weilaundbnicht auf das gleiche Objekt zeigenc == b- weilcundbauf 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 String-Pool wiederverwendet.aunddzeigen also auf das gleiche Objekt im Poola equals d- weil der Text der beiden String Objekte identisch istc != d- weilcunddnicht auf das gleiche Objekt zeigen
Fragen
[Quelltext bearbeiten]Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!
- Besuche unseren Chat
Wir helfen dir gerne!
