Skip to main content

So nutzt du Methoden aus der Java String Klasse

In einen der letzten Beiträge haben wir darüber gesprochen,

  • dass Java Strings – Objekte sind.
  • Dass Strings in allen Programmen äußerst häufig vorkommen
  • Und dass sich deshalb Referenzvariablen String-Objekte im String Pool teilen.

Das Konzept hinter dem String-Pool ist die Teilung der Ressourcen.
Und das bedeutet:

  • Weniger Objekte – mehr Speicher
  • Mehr Speicher – bessere Performance

Es bedeutet aber auch, dass stets und ständig die Sicherheit gewährleistet sein muss.

Wenn ungewiss ist, wie viele Referenzvariablen stets und ständig auf die String-Objekte zeigen – können diese nicht einfach so verändert werden.

Java Strings Pool 4 Verweise 1 Objekt

Wenn du das String-Objekt bzw. dessen Textwert „Matze“ in „Matze2“ ändern würdest, denn hießen alle Nutzer „Matze2“.
Und das wäre blöd.

Deshalb sind Strings besonders geschützt.

In Java sind Strings unveränderbar.

Egal, wie du die Strings erzeugst – Es handelt sich immer um Objekte der Klasse String.

Und diese Klasse befindet sich im Standardpaket der Java API.
Das heißt dann:
Du bekommst bei jedem String-Objekt, welches du anlegst automatisch Methoden dazu.
Und mit diesen Methoden kannst du das String-Objekt verändern.

Lass uns die String-Klasse in den API Docs anschauen.

Java String Klasse API DOCS

Schau dir die Methoden, welche die String-Klasse so bietet einmal an.
Vor allem die Rückgabewerte.
Java Klasse Strings Rückgaben

Dort siehst du als Rückgabe – Strings, Integer oder mitunter auch booleans.

Erst einmal nicht ungewöhnlich…
Wenn du dir allerdings die Beschreibungen der einzelnen Methoden mit String-Rückgabe, genauer anschaust – Dann siehst du, dass bei allen Methoden neue Strings produziert werden.

Der String, welchen du übergibst bleibt unverändert.
Stattdessen geben dir die Methoden neue Strings zurück.

Lass uns das einmal ausprobieren.

So kannst du den String mit einer Methode verändern

Suche dir irgendeine Methode aus den API Docs aus.

Du kannst zum Beispiel Textausschnitte extrahieren.
Dies machst du mit der Methode substring().

  • Du gibst das Objekt ein.
  • Setzt den Punkt und leitest die Punktnotation ein.
  • Und dann schreibst du den Namen der Methode – also substring.
  • In die Klammern setzt du eine Zahl.
    Die Zahl ist die Position des Schriftzeichens, ab wann extrahiert werden soll.

Bei dem Textwert „Matze“ und der Methode substring(2)- würde die Methode den Textwert „tze“ zurückliefern.
Probieren wir es aus.


public class ChatProgramm {
 
public static void main(String[] args) {
String benutzerEins = "Matze"; //neues String-Objekt ohne Konstruktor erstellt        
 
benutzerEins.substring(2); //extrahiert ab dem zweiten Buchstaben
System.out.println(benutzerEins);//Es bleibt dennoch Matze
}
}

Matze bleibt Matze.
Das Objekt wurde nicht verändert.

Aber es wurde ein neues String-Objekt angelegt.
Und zwar direkt in den Pool.

Java-Strings-Substring

Und dieses hat noch keinen Verweis.
Es existiert keine Referenzvariable, welche auf dieses neue Objekt zeigt.

Der „benutzerEins“, aus dem dieses neue Objekt erschaffen wurde, behält seine Referenz.

Das heißt:

  • Wenn du den String veränderst, musst du immer auch einen neuen Verweis anlegen.
  • Ansonsten kannst du den neuen String nicht verwenden.
  • Und der String lebt ohne Referenzvariable, somit ohne Verweis.
  • Der neuer String ist somit Futter für den Garbage Collector.

public class ChatProgramm {
 
public static void main(String[] args) {
String benutzerEins = "Matze";
 
String teilStueck = benutzerEins.substring(2); //extrahiert ab dem zweiten Buchstaben
System.out.println(teilStueck);//Rückgabe tze
}
}

Jetzt verweist die Referenzvariable „benutzerEins“ auf den Matze-String.
Und die Referenzvariable „teilStueck“ auf den extrahierten neuen String.

Zusammenfassung:

  • In Java sind Strings unveränderlich.
    Und das ist auch gut so.
  • Aufgrund dessen, dass Strings im Constant Pool verwaltet werden, können sämtliche Variablen diesen String nutzen.
  • Dadurch muss so ein String-Objekt besonders geschützt sein.
  • Alle Methoden, welche die String-Klasse dir bietet, erschaffen lediglich einen neuen String.
  • Wenn du diesen verwenden möchtest – Musst du immer eine neue Referenzvariable dazu anlegen.

Ähnliche Beiträge

So kannst du in drei einfachen Schritten Java Arrays dynamisch vergrößern

Java Arrays vergrößern

Es ist der 31.März 1727. Es ist ein Montag. Die Welt nimmt Abschied von einem sehr bedeutenden Weltveränderer. Seine Sichtweisen beeinflussen, heute noch, die Forschung und Entwicklung im Bereichen der Physik und Chemie. Ja selbst unser aller Leben – unsere Sicht auf die alltäglichen Dinge – wurden durch seine Denkstöße revolutioniert. Dieser große Vorreiter starb […]

Zwei smarte Möglichkeiten eine Java Zufallszahl zu erzeugen

Java Zufallszahl

Java Zufallszahl – Wieso? In der Java Programmierung benötigst du immer wieder einmal Zufallszahlen. Du möchtest deine Software mit Daten testen und dir keine Zahlen ausdenken. Du benötigst Stichproben, welche ein reales Verhalten simulieren. Du hast ein Spiel entworfen und die Akteure sollen mit zufälligen aber unterschiedlichen Größen, Rüstungsleveln usw. auftreten. Die Einsatzmöglichkeiten für Zufallszahlen […]

Java For Each Schleife – Aufbau und Funktionsweise

Java for each Schleife

In einer anderen Lektion habe ich dir bereits gezeigt, wie du ein Java Array mit einer for-Schleife füllen und dir später die Werte zurückgeben lassen kannst. Es gibt allerdings einen weiteren Schleifentyp, welche geradezu prädestiniert ist für Java Arrays. Dieser Schleifentyp nennt sich for each Schleife. In diesem Beitrag möchte ich dir zeigen, wie du […]

Java Konsolenausgaben mit formatierten Zahlen

Java Konsolenausgaben Zahlen

Java Konsolenausgaben erzeugst du mit der System.out.println()-Anweisung. Dies ist relativ einfach. Aber es ist mitunter nicht ganz praktisch. Und zwar immer dann, wenn Zahlen im Spiel sind. Die Zahlen welche dann auf deiner Java Konsole erscheinen, sind unformatiert. Sie haben zu viele Kommastellen. Oder für eine bessere Darstellung benötigst du den Tausenderpunkt. Vielleicht möchtest du […]

So kannst du in den Java Klassen Attribute anlegen

Java Klassen Attribute

Die bisherigen Java Klassen in unserem Einführungsbeispiel besitzen noch keine Attribute. Das ändern wir und legen diese jetzt an. In diesem Beitrag erfährst du: Warum Variablen in deinen Klassen eine entscheidende Rolle spielen. Was es bedeutet eine Variable zu deklarieren. Wo du Attribute in den Java Klassen anlegen darfst und wo nicht. Wie du durch […]

Drei Möglichkeiten um Java Objekte zu zerstören

Java Objekte zerstören

Java Objekte leben genau solange, wie eine Referenzvariable auf sie zeigt. Wenn dieser Zeiger nicht mehr existiert, wird dieses Objekt aufgeben. Und wenn dieses Objekt erst einmal aufgegeben wurde, dann kommt der Garbage Collector und entsorgt dieses. Aber wie kannst du nun am Sinnvollsten Objekte aufgeben? Lass es uns herausfinden.

Der Java Datentyp boolean im Interview

Java boolean

Nein, ich bin nicht verrückt. Aber… Neulich traf ich zufällig den Java Datentyp boolean. 🙂 Er erklärte sich bereit, mir ein Interview zu geben. In diesem Interview geht es um die Werte, welcher dieser Wertetyp annehmen kann. Und in diesem Zusammenhang geht es auch um Logik. Also lassen wir uns doch die Logik vom direkten […]

Die drei Bestandteile aller Java Klassen

Java Klassen Bestandteile

Java ist eine objektorientierte Programmiersprache. Was heißt das? Ja… Anscheinend hat es etwas mit Objekten zu tun. Also was ist ein Objekt? Ein Objekt ist ein bestimmtes Konstrukt im Programm. Bauen wir ein Spiel. Ein Grafik-Adventure. Du kennst das. Ein Held wird in eine bestimmte Spielwelt hinein gesteckt. Der Held muss mit bestimmten Personen sprechen. […]

So organisierst und verwaltest du ganz bequem deine Java Projekte

Du kennst das auch. Denn du bist ja fleißig. Und weil du so fleißig bist, hast du mitunter auch mehrere Java Projekte gleichzeitig laufen. Und dann kommt es vor, dass du enorm viele Java Projekte am Laufen hast. Und dein Package-Explorer wird extrem unübersichtlich. In diesem Beitrag möchte ich dir zwei Varianten vorstellen, wie du […]

Java lernen von Kopf bis Fuß

Wenn du Java lernen möchtest, kannst du an meinem kostenlosen Java Kurs teilnehmen. Aber manch Einer hätte gern eine zweite Meinung. Und da bieten sich natürlich Java Bücher an. Eines dieser Java Bücher möchte ich dir jetzt vorstellen. Dieses Buch nennt sich „Java von Kopf bis Fuß“. Was kannst du von diesem Buch erwarten? Also […]