1.09 Worte und Texte: Strings

Möchte man Worte oder Texte in Java speichern, so benötigt man eine Variable vom Typ String. Im Detail werden wir diese später noch beleuchten, aber die wichtigsten Informationen zum Umgang damit schauen wir uns hier schon einmal an. Neben den Erklärungen auf dieser Seite gibt es auch zu diesem Thema einen Clip:

Starten wir mit einem Beispiel:

public class StringTest {

  public static void main(String[] args) {
    
    String ersterNeffe;
    ersterNeffe="Tick";
    
    String zweiterNeffe;
    zweiterNeffe = "Trick";
    
    String dritterNeffe;
    dritterNeffe = "Track";
    
    System.out.println(ersterNeffe);
    System.out.println(zweiterNeffe);
    System.out.println(dritterNeffe);
  }

}

Beachte, dass hier die Anführungszeichen wichtig sind. Lässt man sie weg, erhält man eine Fehlermeldung.

Man kann aus gegebenen Strings einen neuen durch Konkatenation, d.h. durch Zusammenhängen, erschaffen. Dies geschieht mittels des +-Zeichens. Das kann man bei einer Ausgabe nutzen:

System.out.println(ersterNeffe+zweiterNeffe+dritterNeffe);

Dies führt in der Konsole zu dieser Ausgabe:

TickTrickTrack

Etwas schöner wäre aber wohl diese Anweisung:

System.out.println(ersterNeffe+", "+zweiterNeffe+", "+dritterNeffe);

Diese führt in der Konsole zu dieser Ausgabe:

Tick, Trick, Track

Man kann auf diese Weise auch einen neuen String erstellen und speichern. So führen diese drei Zeilen zu derselben Ausgabe:

String alleDrei;
alleDrei=ersterNeffe+", "+zweiterNeffe+", "+dritterNeffe;
System.out.println(alleDrei);

Eine Ausgabe kann man auch aus Strings und anderen Datentypen wie int-Werten zusammensetzen. Schauen wir uns dazu dieses Beispiel an:

public class StringTest {

  public static void main(String[] args) {

    String ersterNeffe;
    ersterNeffe="Tick";

    String zweiterNeffe;
    zweiterNeffe = "Trick";

    String dritterNeffe;
    dritterNeffe = "Track";

    int nummer;
    nummer = 1;		
    System.out.println(nummer+". "+ersterNeffe);
    
    nummer = nummer + 1;		
    System.out.println(nummer+". "+zweiterNeffe);
    
    nummer = nummer + 1;		
    System.out.println(nummer+". "+dritterNeffe);
    
  }

}

Dieses liefert folgende Ausgabe:

1. Tick
2. Trick
3. Track

Die „Addition“ eines int-Wertes und eines Strings führt also wieder zu einem String. Das kann allerdings auch eigenartige Nebeneffekte haben. Was meinst Du, was dieses Beispiel liefert?

public class StringTest {

  public static void main(String[] args) {

    int eineZahl;
    eineZahl = 12;
    
    int nochEineZahl;
    nochEineZahl = 34;
    
    System.out.println("Summe: "+eineZahl+nochEineZahl);
    
  }

}

Man könnte denken, dass wir Summe: 46 erhalten. Stattdessen liefert uns Java aber dies:

Summe: 1234

Das liegt daran, dass der Ausdruck "Summe: "+eineZahl+nochEineZahl von links nach rechts ausgewertet wird. Zunächst wird "Summe: "+eineZahl gebildet. Dies liefert den String Summe: 12. Zu diesem String wird nun noch der int-Wert 34 „addiert“. Da bei Strings eine Addition aber aus Zusammenhängen besteht, wird einfach 34 hinten angehängt, so dass wir die Ausgabe von oben erhalten.

Diesen Effekt können wir aber mit zwei Klammern umgehen. "Summe: "+(eineZahl+nochEineZahl) liefert tatsächlich Summe: 45.

Hast Du Dir den Abschnitt zu Referenzvariablen in der Lektion zu Arrays durchgelesen, dann ahnst Du schon, welche Ausgabe wir hier erhalten:

public class StringTest {

  public static void main(String[] args) {

    String ersterNeffe;
    ersterNeffe="Tick";

    String zweiterNeffe;
    zweiterNeffe = "Trick";

    String dritterNeffe;
    dritterNeffe = "Track";

    String alleDrei;
    alleDrei=ersterNeffe+", "+zweiterNeffe+", "+dritterNeffe;
    
    String meineNeffen;
    meineNeffen="Tick, Trick, Track";

    System.out.println(alleDrei);
    System.out.println(meineNeffen);

    System.out.println(alleDrei==meineNeffen);
    
  }

}

Die Ausgabe lautet false, da auch Strings Referenzvariablen sind – es handelt sich eben wieder um keinen primitiven Datentyp.

Wollen wir vergleichen, ob zwei Strings denselben Text enthalten, geht das so ähnlich (aber leider nicht exakt gleich) wie bei Arrays:

		System.out.println(alleDrei.equals(meineNeffen));

Dies liefert true. Wir benötigen hier übrigens keine import-Anweisung am Anfang.