ein String Vergleich mit einem == nicht zum gewünschten Ergebnis führt
public class FalscherStringVergleich
{
String a="Hallo";
String b="Hallo";
public static void main(String[] args)
{
//Die Ausgabe ist false
System.out.println(a==b);
}
}
Die Ausgabe ist false obwohl beide Strings den gleichen Inhalt haben und eigentlich true sein sollte. Warum ist das so?
Der Vergleich mit a==b prüft nicht auf den Inhalt der Stringobjekte sondern auf den Speicherplatz wo diese sich im Ram befinden.
Da der String a und der String b verschiedene Objekte der Klasse String sind, befinden sie sich natürlich nicht auf der selben Speicherstelle im Ram und deshalb liefert der Vergleich false was soviel aussagt, dass sich beide Objekte nicht auf dem selben Platz befinden.
Doch wie prüft man jetzt ob zwei Strings denselben Inhalt haben?
Mit equals() oder mit equalsIgnoreCase()
Equals() liefert true wenn der Inhalt zweier Strings gleich ist, also beispielsweise wenn a="Hallo" und b="Hallo" ist.
Spielt die Großschreibung bzw. Kleinschreibung keine Rolle so wählt man equalsIgnoreCase() die true liefert beispielsweise für a="Hallo" und b="hallo". Die Methode equals() würde in diesem Fall false liefern.
public class RichtigerStringVergleichEquals
{
String a="Hallo";
String b="Hallo";
public static void main(String[] args)
{
//Die Ausgabe ist true
System.out.println(a.equals(b));
}
}
public class RichtigerStringVergleichEqualsIgnoreCase
{
String a="Hallo";
String b="hallo";
public static void main(String[] args)
System.out.println(a.equalsIgnoreCase(b));
}
}