Tiefergehende 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
12345678910111213141516package 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.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 2.63
Tiefergehende 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
12345678910111213141516package 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.
Danke für Ihr Feedback!