Vergleichen von Strings (Java): Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(7 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 [http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object) Object#equals(Object obj)] verglichen werden.<br>
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";


if (a.equals(b)) {
      System.out.println(a.equals(b) ? "a equals b" : "a not equals b");
    System.out.println("equals");
      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>
if (a == b) {
    System.out.println("==");
}
 
if(c == b) {
  System.out.println("gleich");
}</syntaxhighlight>


Ausgabe:<br>
Ausgabe:<br>
*<code>equals</code> - weil der Text der beiden String Objekte identisch ist<br>
*<code>a equals b</code> - weil der Text der beiden String Objekte identisch ist
*<code>gleich</code> - weil <code>c</code> und <code>b</code> auf das gleiche Objekt zeigen
*<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 ist
  • a != b - weil a und b nicht auf das gleiche Objekt zeigen
  • c == b - weil c und b auf das gleiche Objekt zeigen
  • a == 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. a und d zeigen also auf das gleiche Objekt im Pool
  • a equals d - weil der Text der beiden String Objekte identisch ist
  • c != d - weil c und d nicht auf das gleiche Objekt zeigen


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!