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

Der bedeutende Unterschied zwischen Klassenvariablen und Instanzvariablen

Java Klassenvariablen

Bei der Java Programmierung unterscheidet man drei Arten von Variablen. Als erste Gruppe sind die lokalen Variablen zu nennen. Auf diese gehe ich in einem separaten Artikel ein. Mich interessieren die zwei anderen Variablentypen. Zum einen existieren Klassenvariablen. Und dann sind da noch die Instanzvariablen. Wo liegt der Unterschied? Instanzvariablen stehen einem Objekt zur Verfügung. […]

So verwendest du Inkrement und Dekrement Operatoren in deinen Java Programmen

Java Operatoren

In diesem Beitrag geht es um Java Operatoren. Ich möchte dir gern zwei neue Operatoren vorstellen. Diese nennen sich Inkrement und Dekrement. Ja was heißt das? Inkrementieren bedeutet eine schrittweise Erhöhung einer Zahl. Und dementsprechend bedeutet Dekrementieren: Die schrittweise Verminderung einer Zahl. Wozu brauchst du das? Stell dir vor. Du bekommst eine Liste mit Namen […]

So nutzt du getter und setter Methoden bei der Java Programmierung

Java Keyword private

In diesem Artikel möchte ich dir zeigen, wie du Instanzvariablen innerhalb der Java Klasse schützt. Und den Zugriff nur noch indirekt über getter und setter Methoden anbietest. Stell dir vor. Du hast ein Programm zur Lagerverwaltung geschrieben. Dieses Programm dient Möbelhäusern dazu, ihre Bestände zu verwalten. Und das Programm erwartet vom Nutzer gewisse Eingaben zu […]

Overriding und Vererbung – So lassen sich Java Methoden überschreiben

Java Methoden überschreiben

In Deutschland entstehen jeden Tag tolle Geschichten. So wie diese hier…. Die größte Turmuhr der Welt, die Makkah Clock, steht in Saudi – Arabien. Und zwar direkt in Mekka. Hier ein paar Eckdaten zur Uhr: Höhe des Turmes 601 m. Das Ziffernblatt der Turmuhr hat einen Durchmesser von 43 Meter Die Länge des Minutenzeigers beträgt […]

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 lassen sich aus Java Klassen Instanzen erstellen

Java Klassen Instanzen erstellen

Lass uns jetzt aus den Java Klassen heraus Objekte anlegen. Im Einführungsbeispiel hast du bereits gelernt, wie du: Instanzvariablen bzw. Attribute anlegst Wie du aus einer normalen Java Klasse eine Programmstart Klasse machst In diesem Artikel erfährst du: Was Objekte bzw. Instanzen sind. Wie sich Objekte zusammensetzen. Wo und wie du Instanzen aus Java Klassen […]

Die vier wichtigen Phasen um Java Objekte zu erstellen

Java Objekte anlegen

Wie werden aus deinen Java Klassen richtig nützliche Java Objekte? Das ganze läuft in vier Phasen ab. Und diese Phasen möchte ich dir in diesem Beitrag vorstellen. Ob das nützlich ist? Schau dir das Bild an. Am Ende dieses Beitrages wirst du wissen, warum Eclipse dir hier eine Fehlermeldung gibt und wie du dieses Problem […]

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.