Informatik

Zeichenketten

String ist der erste Objekttyp, mit dem du richtig arbeitest. Ein String-Objekt speichert eine Folge von Zeichen und bringt eine Reihe von Methoden mit – Fähigkeiten, die du auf dem Objekt aufrufen kannst.

Methoden aufrufen

Sage zuerst ohne Rechner voraus, was die sechs Zeilen ausgeben. Führe das Programm erst danach aus.

Auflösung
10
I
Infor
matik
5
INFORMATIK

Der Punkt zwischen wort und length() bedeutet: „Rufe auf dem Objekt wort die Methode length auf.“ Das ist derselbe Punkt wie bei hase.setPosition(...) im ersten Kapitel.

Methode Ergebnis
wort.length() Anzahl der Zeichen
wort.charAt(i) das Zeichen an Position i als char
wort.substring(a, b) Teilzeichenkette von Position a bis vor b
wort.substring(a) alles ab Position a
wort.indexOf(teil) Position des ersten Vorkommens, sonst -1
wort.toUpperCase() alles in Großbuchstaben
wort.equals(anderes) true, wenn beide denselben Inhalt haben

Die Zählung beginnt bei 0. Das erste Zeichen hat die Position 0, das letzte die Position length() - 1.

Die wichtigste Falle: gleich ist nicht gleich

Sage voraus, was das Programm ausgibt. Diese Aufgabe ist eine Falle – nimm dir Zeit.

Auflösung

Wenn du Hallo eingetippt hast:

true
true
false
true

Der Vergleich mit == prüft bei Objekttypen, ob beide Variablen auf dasselbe Objekt verweisen – nicht, ob der Inhalt gleich ist.

a und b verweisen zufällig auf dasselbe Objekt, weil Java gleiche Textkonstanten aus dem Quelltext zusammenlegt. c entsteht dagegen erst beim Einlesen – ein neues Objekt mit gleichem Inhalt, aber an anderer Stelle im Speicher.

Zeichenketten vergleicht man immer mit equals, niemals mit ==.

if (eingabe.equals("ja")) { ... }

Dieser Fehler ist so häufig, dass er einen eigenen Merksatz verdient: == vergleicht Verweise, equals vergleicht Inhalte. Bei elementaren Typen wie int ist == dagegen genau richtig.

Aufgabe 1: Initialen

Schreibe ein Programm, das nach Vor- und Nachnamen fragt und daraus die Initialen bildet:

Vorname: Ada
Nachname: Lovelace
Initialen: A.L.
Tipp: Wie komme ich an den ersten Buchstaben?

vorname.charAt(0) liefert das erste Zeichen. Alternativ geht auch vorname.substring(0, 1) – das ergibt einen String statt eines char.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 2: Palindrom-Vorbereitung

Ein Palindrom liest sich vorwärts wie rückwärts, zum Beispiel Otto oder Rentner.

Schreibe ein Programm, das ein Wort einliest und das erste und das letzte Zeichen ausgibt – und danach mitteilt, ob diese beiden übereinstimmen.

Den vollständigen Palindromtest baust du in Kapitel 3, wenn du Schleifen kennst.

Tipp 1: Das letzte Zeichen

Das erste Zeichen steht an Position 0. Das letzte steht nicht an Position length(), sondern eine Stelle davor: wort.length() - 1.

Tipp 2: Zwei Zeichen vergleichen

charAt liefert einen char – und das ist ein elementarer Typ. Zwei char vergleichst du deshalb mit ==, nicht mit equals.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Zusatzaufgabe

Schreibe ein Programm, das eine E-Mail-Adresse einliest und daraus den Namen (alles vor dem @) und die Domain (alles danach) getrennt ausgibt.

Du brauchst dafür indexOf und substring. Überlege dir außerdem: Was macht dein Programm bei einer Eingabe ohne @?


Selbsttest

Zeichenketten

Teilbare URL erstellen

Abschnitte auswählen