Java Schnellstart – Strings

Sicherlich weißt du bereits, dass du mit dem Datentyp String, Texte abspeichern kannst. Ein String ist, im Vergleich zu den bisher vorgestellten Datentypen, jedoch kein primitiver Datentyp, sondern ein sogenannter komplexer Datentyp.

In dieser Lektion erfährst du, was das bedeutet und wofür du Strings in deinen Java-Programmen einsetzen kannst.

Was ist ein String?

Ein String ist ein komplexer Datentyp zum Verwalten von Texten. Da ein String ein komplexer Datentyp ist, musst du ihn mit dem Stichwort new erzeugen. Der Text des Strings wird zwischen zwei Anführungszeichen geschrieben.

Code-Beispiel neuer String:

String meinText = new String("Das ist ein Text");

In der ersten Lektion hast du das berühmte "Hallo Welt"-Programm geschrieben. Der Parameter "Hallo Welt!", den du der Methode System.out.println übergeben hast, war ein String.

Der Datentyp String ist einer der am häufigsten benutzte komplexe Datentypen. Strings kommen in jeder Kommunikation per Text zum Einsatz, wie auch in Word-Dokumenten oder dieser Lektion.

Da dieser Datentyp so oft eingesetzt wird, gibt es für Strings auch eine Kurzschreibweise:

String meinText = "Das ist ein Text";

Wie du siehst, können wir String direkt einen Wert zuweisen, obwohl das normalerweise nur für primitive Datentypen wie bspw. int oder float zulässig ist. Dafür müssen wir nur Anführungszeichen verwenden und der Compiler macht dann aus diesem Konstrukt automatisch einen String mit dem new-Schlüsselwort (wie im obigen Beispiel gezeigt).

Strings haben viele nützliche Methoden zur Textverarbeitung

Der Vorteil den ein komplexer Datentyp hat, ist, dass wir Methoden ausführen können. Für einen String sind das mehr als 40 Methoden. Eine komplette Auflistung findest du in der Dokumentation von Java unter folgendem Link: https://docs.oracle.com/javase/7/docs/api/java/lang/String.html

Beliebte String-Methoden

In Folgendem möchte ich dir wichtigsten Methoden vorstellen:

public char charAt(int index)

Mit dieser Methode kannst du einzelne Zeichen aus einem Text abfragen. Der Rückgabetyp ist char (also ein Zeichen). Als Parameter musst du die abzufragende Stelle im Text angeben. Man fängt von links und von 0 an zu zählen.

Code-Beispiel:

class Main {
  public static void main(String[] args) {
    String s = "Hallo, das ist ein Test";
    System.out.println(s.charAt(0));
    System.out.println(s.charAt(7));

    // Ausgabe: 
    //    H
    //    d
  }
}
Code ausprobieren ×

public String concat(String s)

Diese Methode verkettet einen String mit einem anderen. Du kannst alternativ dazu den + oder += Operator verwenden:

class Main {
  public static void main(String[] args) {
    String s = "Mein Name ist Bond...";
    System.out.println(s.concat("James Bond"));
    System.out.println(s+"James Bond");
    String s2 = s + "James Bond";
    System.out.println(s2);
    s += "James Bond";
    System.out.println(s);

    // Ausgabe: 
    //    4x Mein Name ist Bond...James Bond
  }
}
Code ausprobieren ×

public boolean equals(String s)

Diese Methode prüft, ob ein String gleich einem anderem ist. Das kannst du zum Beispiel verwenden, wenn du prüfen willst, ob ein Passwort übereinstimmt.

class Main {
  public static void main(String[] args) {
    String meinPasswort = "#superT0llesPassw0rt";
    System.out.println(meinPasswort.equals("#superT0llesPassw0rt"));
    System.out.println(meinPasswort.equals("abc123"));

    // Ausgabe:
    // true
    // false
  }
}
Code ausprobieren ×

public boolean contains(String s)

Möchtest du nicht auf Gleichheit prüfen, sondern nur, ob eine bestimmte Zeichenkette in einer anderen vorkommt, so benutzt du contains.

class Main {
  public static void main(String[] args) {
    String schueler = "Max,Lena,Lisa,Tom,Tobias";
    System.out.println(schueler.contains("Lisa"));
    System.out.println(schueler.contains("Herbert"));

    // Ausgabe:
    // true
    // false
  }
}
Code ausprobieren ×

Code-Aufgabe: Extra sicheres Passwort

Für eine Lagersoftware hat sich das Unternehmen LP Lager AG eine besonders sichere Variante für den Zugriffsschutz ausgedacht.

Der Nutzer muss zwei Passwörter eingeben. Einen Teil des Passworts kann sich der Nutzer aus dem Passwortmanager holen, den anderen Teil muss er sich merken und in ein Formular eintippen.

  1. Das System verkettet nun die beiden Passwörter (passwortManager sowie das gemerkte Passwort) zu einem gesamten Passwort. (Tipp: concat-Methode s.o. oder + Operator)
  2. Dieses verkettete Passwort wird im Anschluss auf Gleichheit mit dem eigentlichen Passwort "#!43GfUPleaseDontH4ckMe" verglichen. Es soll ausgegebenen werden, ob das Passwort übereinstimmt. (Tipp: equals-Methode, s.o.)

Als Vorlage kannst du die zwei Strings aus folgender Vorlage verwenden:

 

Lösung:
[lp_spoiler]

class Main {
  public static void main(String[] args) {
    // Passwörter
    String passwortAusManager = "#!43GfU";
    String passwortGemerkt = "PleaseDonth4ckMe";
    // Verkettung der Passwörter
    String eigentlichesPasswort = passwortAusManager + passwortGemerkt;
    // Stimm das Passwort überein?
    System.out.println(eigentlichesPasswort.equals("#!43GfUPleaseDontH4ckMe"));
  }
}
Code ausprobieren ×

[/lp_spoiler]

Fazit

Strings gehören zu den Datentypen, die du am häufigsten einsetzt. Die Wertezuweisung hat im Vergleich zu anderen komplexen Datentypen Vorteile, da du sofort Werte zuweisen kannst.