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 unterstützen dich Java Vererbungstabellen beim Entwurf

Java Vererbungstabellen

Bei der Java Vererbung gibt es zwei Klassenarten bzw. -stufen. Die Superklassen, welche einen allgemeinen Typen darstellen Und die spezielleren Unterklassen, welche die Superklasse um bestimmte Funktionen erweitern. Jetzt ist dieses ganze „Der-erbt-von-dem-Konzept“ mitunter sehr schwierig darzustellen. Zum Beispiel in einem Werkzeugkoffer. In einem Werkzeugkoffer befinden sich sämtliche Werkzeuge, von Säge bis Bohrmaschine. Wie machst […]

So lassen sich Java Strings in char zerlegen

Java Strings zerlegen char

Java Strings sind Zeichenketten. Und diese Zeichenketten lassen sich aufsplitten und in ihre Einzelteile zerlegen. Ich möchte dir in diesem Beitrag Möglichkeiten vorstellen, wie du Strings in Character-Datentypen zerlegen, extrahieren und die Einzelteile in Arrays speichern kannst.

Java Strings landen im String Constant Pool

Java-Strings-Pool

Du kennst das. Es ist abends. Du sitzt gemütlich vor dem Fernseher. Das Smartphone bimmelt. Kein Anruf. Nein – Eine Nachricht. Du liest die Nachricht sofort und antwortest darauf. Minuten später bekommst du die nächste Nachricht. Und auch auf diese antwortest du. Im Laufe des Abends entsteht daraus eine nette kleine Konversation. Und eh du […]

Den Java Vererbungsbaum nach dem Ist-Es-Prinzip richtig entwerfen

Java Vererbungsbaum

Vererbungsbaum in Java – klingt erstmal komisch. Dennoch wird dies so bezeichnet. Gemeint sind damit – die einzelnen Hierarchiestufen oder Vererbungsebenen – von der Superklasse bis runter zu den Kindklassen. Wie sieht das nun konkret aus? Vererbung bedeutet: Du definierst einen allgemeinen Typen – zB. Möbel Und dann implementierst du eine Unterklasse, welche die Oberklasse […]

Der Aufbau von Java Klassen

Java Klassen Aufbau

Jedes Java Programm besteht aus Java Klassen. Doch wie sind diese aufgebaut? Wie setzt sich die Struktur zusammen? Wo befinden sich Klassen hierarchisch? Was kommt in die Klassen rein und wie wird es integriert? Das sind die Fragen, welche ich in diesem Artikel beantworten werde. Doch bevor wir bei den Klassen ansetzen, müssen wir eine […]

Der wichtige Unterschied zwischen Java Methoden

Java Methoden Unterschied

Jetzt machen wir Nägel mit Köpfen. Dieses Sprichwort stammt aus den Anfängen des Industriezeitalters. Denn früher wurden Nägel nicht industriell, sondern per Hand gefertigt. Und da kam es schon einmal vor, dass versehentlich Nägel ohne Kopf produziert wurden. Was blieb ist das Sprichwort „Nägel mit Köpfen“ Und dieses steht sinngemäß für eine schnelle, qualitativ hochwertige […]

Die mathematischen Grundlagen des Dezimalsystems für Java Programmierer

Java Dezimalsystem Mathematik Programmierer

Bei der Java Programmierung benötigst du Kenntnisse über das Dezimalsystem. Allein schon für die technische Umsetzung beim Runden einer Zahl. Oder du möchtest den Kehrwert bzw. den Umkehrwert einer Zahl im Programm bestimmen lassen. Aber auch für das Herausfinden des Stellenwertes – also wieviel Stellen hat eine Zahl – benötigst du das Grundwissen des Dezimalsystems. […]

So kannst du ein neues Java Projekt mit Eclipse anlegen und konfigurieren

Java Projekt anlegen Eclipse

In diesem Beitrag möchte ich dir zeigen, wie du ein neues Java Projekt mit Eclipse anlegen kannst. Ich werde dir außerdem einen kurzen Überblick über die Konfigurationsmöglichkeiten geben. Dann gebe ich dir noch eine ganz einfache Schritt-für-Schritt-Anleitung für dein allererstes Java Projekt und ich zeige dir, was nach dem Anlegen des Projektes eigentlich passiert ist.

Java Methoden mit variabler Argumentenanzahl – VarArgs

Java Methoden mit variabler Argumentenanzahl VarArgs

Du kennst das noch. Kopfrechnen und zwar auf Zeit. So etwas ist das Standardprogramm in den Schulklassen 1 bis 5. Irgendwann, in Klasse 6 oder 7, kommt der Taschenrechner ins Spiel und Kopfrechnen ist aus dem Schulalltag gestrichen. Schade eigentlich. Dabei kann man diese Disziplin auch wunderbar in kleinen Spielen unterbringen. Ich erinnere mich noch: […]

Ein Java Fenster erzeugen mit dem JFrame

Java-Fenster-erzeugen

Ein Java Fenster erzeugen mit Swing. Java Swing – was ist das? Zum Erstellen von grafischen Benutzeroberflächen, kurz GUI, bietet Java eine eigene Standardklasse an. Diese Klasse nennt sich Swing. Aus dieser Swing-Klasse heraus können Objekte erstellt werden. Diese Objekte lassen sich in vier verschiedene Kategorien einteilen. Fenster und Dialoge bilden das Grundgerüst einer grafischen […]