Zum Inhalt

Java: Vergleich von Strings

Will man in Java zwei Strings miteinander vergleichen, so muss hierbei aufpassen bzw. sollte eigentlich immer nur einen Weg verwenden. Schauen wir uns aber zunächst ein einfaches Beispiel in Java an.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class StringTest {
	public static void main(String[] args) {
		String vsTest1 = "Hallo";
		String vsTest2 = new String("Hallo");
		String vsTest3 = new String("Erst das");
		vsTest3 = "Hallo";
 
		System.out.println("");
		System.out.println( " vsTest1: " + vsTest1 );
		System.out.println( " vsTest2: " + vsTest2 );
		System.out.println( " vsTest3: " + vsTest3 );
		System.out.println("");
 
		if ( vsTest1 == vsTest2 )
			System.out.println (" '==' Vergleich: vsTest1 und vsTest2 sind gleich ");
		else
			System.out.println (" '==' Vergleich: vsTest1 und vsTest2 sind nicht gleich ");
 
		if ( vsTest1.equals(vsTest2) )
			System.out.println (" 'equals' Vergleich: vsTest1 und vsTest2 sind gleich ");
		else
			System.out.println (" 'equals' Vergleich: vsTest1 und vsTest2 sind nicht gleich ");
		System.out.println("");
		if ( vsTest1 == vsTest3 )
			System.out.println (" '==' Vergleich: vsTest1 und vsTest3 sind gleich ");
		else
			System.out.println (" '==' Vergleich: vsTest1 und vsTest3 sind nicht gleich ");
 
		if ( vsTest1.equals(vsTest3) )
			System.out.println (" 'equals' Vergleich: vsTest1 und vsTest3 sind gleich ");
		else
			System.out.println (" 'equals' Vergleich: vsTest1 und vsTest3 sind nicht gleich ");
	}
}

Führt man dieses Programm nun aus, so erhält man die folgende Ausgabe:

1
2
3
4
5
6
7
8
9
 vsTest1: Hallo
 vsTest2: Hallo
 vsTest3: Hallo
 
 '==' Vergleich: vsTest1 und vsTest2 sind nicht gleich
 'equals' Vergleich: vsTest1 und vsTest2 sind gleich
 
 '==' Vergleich: vsTest1 und vsTest3 sind gleich
 'equals' Vergleich: vsTest1 und vsTest3 sind gleich

Für den geübten Java Programmierer wird dies jetzt keine Neuigkeit sein, für Einsteiger aber wahrscheinlich schon.
Schauen wir uns es nun aber Schritt für Schritt an.

Obwohl alle drei String Variablen den gleichen Inhalt haben (Zeile 1-3 der Ausgabe), so schlägt zumindest der „==“-Vergleich bei vsTest1 und vsTest2 fehl bzw. erkennt eine nicht Gleichheit. Wie kommt es hierzu?

Da für vsTest2 ein neues Objekt mittels ’new String(„Hallo“)‘ erzeugt wurde, schlägt die Prüfung mittels „==“-Vergleich fehl, da dieser Vergleich einfach einen Vergleich der Objekte und nicht der Werte durchführt.

Als Fazit hieraus kann man nur ziehen, dass ein Vergleich von zwei Strings immer nur mittels ‚equals‘ oder ‚compareTo‘ vornehmen sollte. Weiterführende Informationen findet man in den Links, wobei besonders Link 3 eine schöne Zusammenfassung bietet.

Weiterführende Informationen:

  1. Methode ‚equals (Object)‘
  2. Methode ‚compareTo(String)‘
  3. Java: ==, .equals(), compareTo(), and compare()
Published inJava

Schreibe den ersten Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.