„Was denkst du, Amigo? Was ist nach int die beliebteste Java-Klasse?“

„Du hast mir im Titel der Lektion bereits einen Spoiler gegeben, Ellie String.

„In der Tat ist es ein Spoiler. StringWird absolut überall verwendet. Es verfügt über eine Reihe nützlicher Methoden, die Sie besser kennen sollten.“

„Die StringKlasse ist die einzige Klasse außer primitiven Typen, deren Literale in einer switchAnweisung verwendet werden können; der Compiler behandelt das Hinzufügen von Zeichenfolgen und String-Objekten auf besondere Weise; StringObjekte werden auf besondere Weise im Speicher abgelegt. Im Grunde Stringist die Klasse eine sehr spezielle Klasse.

„Außerdem Stringverfügt die Klasse über eine Reihe von Hilfsklassen, deren Zweck darin besteht, die Arbeit mit Strings in Java weiter zu vereinfachen. Wenn Sie das alles lernen, werden Ihnen viele Dinge wirklich viel einfacher fallen.“

„Ich kann es kaum erwarten.“

„Nun, wir beginnen beim Kern dieses Ökosystems – der Organisation der StringKlasse. Die Struktur der StringKlasse ist eigentlich sehr einfach: Im Inneren befindet sich ein Zeichenarray ( charArray), das alle Zeichen der Zeichenfolge speichert. Für Beispiel: So wird das Wort „Hallo“ gespeichert:

Struktur der String-Klasse

Es ist wichtig.

Eigentlich ist das nicht ganz korrekt. Da die StringKlasse sehr wichtig ist, werden viele Optimierungen vorgenommen und die Daten werden intern nicht als Zeichenarray, sondern einfach als Bytearray gespeichert.

Methoden der String-Klasse

Die StringKlasse hat viele Methoden: Sie hat allein 18 Konstruktoren! Deshalb werde ich im Folgenden nur die am häufigsten verwendeten auflisten:

Methoden Beschreibung
int length()
Gibt die Anzahl der Zeichen in der Zeichenfolge zurück
boolean isEmpty()
Überprüft, ob die Zeichenfolge eine leere Zeichenfolge ist
boolean isBlank()
Überprüft, ob die Zeichenfolge nur Leerzeichen enthält: Leerzeichen, Tabulator, neue Zeile usw.
char charAt(int index)
Gibt das Zeichen an der Indexposition in der Zeichenfolge zurück.
char[] toCharArray()
Gibt ein Array der Zeichen (eine Kopie) zurück, aus denen die Zeichenfolge besteht
byte[] getBytes()
Konvertiert eine Zeichenfolge in eine Reihe von Bytes und gibt das Byte-Array zurück.
String[] split(String regex)
Teilt eine Zeichenfolge in mehrere Teilzeichenfolgen auf.
String join(CharSequence delimiter, elements)
Verbindet mehrere Teilzeichenfolgen miteinander
String intern()
Fügt einen String in den String-Pool ein.

„Das sieht sehr gut aus!“

„Schreiben wir ein Programm, das einen Dateipfad vom Unix-Stil in den Windows-Stil konvertiert. Unix verwendet das /Zeichen, um Ordner zu trennen, während Windows das \Zeichen verwendet. “

Lösung 1. Verwenden eines charArrays

Code Anmerkungen
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
Erstellen Sie ein Scannerobjekt.
Lesen Sie eine Zeile aus der Konsole.

Konvertieren Sie eine Zeichenfolge in ein Zeichenarray.
Durchlaufen Sie die Zeichen.
Wenn das Zeichen ist /,
ersetzen Sie es durch \. Vergessen Sie nicht die Flucht.

Erstellen Sie eine neue Zeichenfolge basierend auf dem Zeichenarray.
Zeigen Sie die Zeichenfolge an.

Lösung 2. Verwendung der split()und- join()Methoden:

Code Anmerkungen
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String array[] = path.split("\\/");


String result = String.join("\\", array);


System.out.println(result);
Erstellen Sie ein Scannerobjekt.
Lesen Sie eine Zeile aus der Konsole.

Konvertieren Sie einen String in ein Array von Strings . Das /Zeichen wird als Trennzeichen verwendet (die zusätzlichen zwei Schrägstriche sind das Ergebnis doppelter Escapezeichen).
Verketten Sie alle Zeichenfolgen im Zeichenfolgen-Array . Das \wird als Trennzeichen verwendet (wir sehen, dass es maskiert ist).

Zeigen Sie die Zeichenfolge an.

Lösung 3. Verwendung der replace(char oldChar, char newChar)Methode:

Code Anmerkungen
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
Erstellen Sie ein Scannerobjekt.
Lesen Sie eine Zeile aus der Konsole.

Ersetzen Sie einfach ein Zeichen durch ein anderes
(das zweite ist maskiert).
Zeigen Sie die Zeichenfolge an.

„Die dritte Lösung hat mir am besten gefallen. Ich werde aber alle drei üben.“

„Gut gemacht, Amigo. Ich sehe, dass du schon ungeduldig bist, dein neues Wissen in die Praxis umzusetzen. Die Lektion ist vorbei.“