Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Tiefergehende Betrachtung von String | String-Fortgeschritten
Java Erweitert

bookTiefergehende Betrachtung von String

Wie Strings in Java tatsächlich funktionieren

Das Konzept eines String und dessen Verwendung ist bereits bekannt. In diesem Kapitel werden die theoretischen Aspekte behandelt, die sich im Inneren eines String verbergen.

Es folgt eine Betrachtung der zugrunde liegenden Repräsentation von String-Werten in Java. Ursprünglich wurde String als Array von char-Werten implementiert, was einfach und intuitiv war. Später erfolgte jedoch eine Umstellung auf ein Array von byte-Werten. Die Gründe für diese Änderung werden im Folgenden erläutert.

Eine char-Variable in Java belegt 2 Bytes Speicher, während eine byte-Variable nur 1 Byte benötigt. Durch die Verwendung von byte-Werten kann der Speicherbedarf erheblich reduziert werden, da nur ein Viertel des Platzes benötigt wird.

Wie kann ein String verschiedene Zeichen, einschließlich nicht-numerischer, aufnehmen? Der Mechanismus ähnelt dem einer char-Variable. Es wird die ASCII-Tabelle verwendet, in der numerische Daten bestimmten Zeichen zugeordnet werden. Dadurch kann eine Vielzahl von Zeichen in einem String dargestellt werden.

Nachfolgend eine Illustration, die den String-Wert "Hello" darstellt:

Die Zellen enthalten Elemente vom Typ byte, die aus der ASCII-Tabelle entnommen werden. Im Code kann sogar das genaue byte-Array eingesehen werden, das im Wert einer String-Variablen gespeichert ist. Dies ist mit der Methode getBytes() möglich.

Main.java

Main.java

copy
12345678910111213141516
package com.example; public class Main { public static void main(String[] args) { String hello = "Hello"; byte[] bytes = hello.getBytes(); printArray(bytes); } static void printArray(byte[] bytes) { for (byte element: bytes) { System.out.print(element + " "); } System.out.println(); } }

Wir können erkennen, dass die byte-Werte mit denen im obigen Diagramm identisch sind. Zusätzlich kann bei Interesse die ASCII-Tabelle herangezogen werden, um den Code jedes Elements mit seinem entsprechenden Wert zu vergleichen.

Dieses byte[]-Array, das wir von einem String-Objekt erhalten, lässt sich weiterverarbeiten.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 2.63

bookTiefergehende Betrachtung von String

Swipe um das Menü anzuzeigen

Wie Strings in Java tatsächlich funktionieren

Das Konzept eines String und dessen Verwendung ist bereits bekannt. In diesem Kapitel werden die theoretischen Aspekte behandelt, die sich im Inneren eines String verbergen.

Es folgt eine Betrachtung der zugrunde liegenden Repräsentation von String-Werten in Java. Ursprünglich wurde String als Array von char-Werten implementiert, was einfach und intuitiv war. Später erfolgte jedoch eine Umstellung auf ein Array von byte-Werten. Die Gründe für diese Änderung werden im Folgenden erläutert.

Eine char-Variable in Java belegt 2 Bytes Speicher, während eine byte-Variable nur 1 Byte benötigt. Durch die Verwendung von byte-Werten kann der Speicherbedarf erheblich reduziert werden, da nur ein Viertel des Platzes benötigt wird.

Wie kann ein String verschiedene Zeichen, einschließlich nicht-numerischer, aufnehmen? Der Mechanismus ähnelt dem einer char-Variable. Es wird die ASCII-Tabelle verwendet, in der numerische Daten bestimmten Zeichen zugeordnet werden. Dadurch kann eine Vielzahl von Zeichen in einem String dargestellt werden.

Nachfolgend eine Illustration, die den String-Wert "Hello" darstellt:

Die Zellen enthalten Elemente vom Typ byte, die aus der ASCII-Tabelle entnommen werden. Im Code kann sogar das genaue byte-Array eingesehen werden, das im Wert einer String-Variablen gespeichert ist. Dies ist mit der Methode getBytes() möglich.

Main.java

Main.java

copy
12345678910111213141516
package com.example; public class Main { public static void main(String[] args) { String hello = "Hello"; byte[] bytes = hello.getBytes(); printArray(bytes); } static void printArray(byte[] bytes) { for (byte element: bytes) { System.out.print(element + " "); } System.out.println(); } }

Wir können erkennen, dass die byte-Werte mit denen im obigen Diagramm identisch sind. Zusätzlich kann bei Interesse die ASCII-Tabelle herangezogen werden, um den Code jedes Elements mit seinem entsprechenden Wert zu vergleichen.

Dieses byte[]-Array, das wir von einem String-Objekt erhalten, lässt sich weiterverarbeiten.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 1
some-alt