„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie viele Bytes belegt ein Java-String und warum hängt die Antwort von seiner Kodierung ab?

Wie viele Bytes belegt ein Java-String und warum hängt die Antwort von seiner Kodierung ab?

Veröffentlicht am 08.11.2024
Durchsuche:768

How many bytes does a Java string occupy, and why does the answer depend on its encoding?

Berechnen der Byteanzahl eines Strings in Java

In Java bestehen Strings aus Zeichen, deren Bytedarstellung je nach variieren kann die gewählte Kodierung. Um die Anzahl der Bytes in einer Zeichenfolge zu bestimmen, muss man die Zeichenkodierung berücksichtigen, die für die Umwandlung in Bytes verwendet wird.

Encoding-Dependent Byte Count

Der Schlüssel zum Verständnis Byteanzahl bedeutet, dass unterschiedliche Codierungen zu unterschiedlichen Bytegrößen für dieselbe Zeichenfolge führen. Beispielsweise erfordert eine in UTF-8 codierte Zeichenfolge möglicherweise 1 Byte pro Zeichen, während eine in UTF-16 codierte Zeichenfolge möglicherweise 2 Bytes pro Zeichen erfordert.

Konvertieren einer Zeichenfolge in Bytes

Um die Byteanzahl zu berechnen, können wir den String mit getBytes() in ein Byte-Array konvertieren. method:

byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");

Die Länge des resultierenden Byte-Arrays liefert die Byteanzahl für diese bestimmte Codierung:

int utf8ByteCount = utf8Bytes.length;
int utf16ByteCount = utf16Bytes.length;

Beispiel

Betrachten Sie die Zeichenfolge „Hello World“:

String string = "Hello World";

// Print the number of characters in the string
System.out.println(string.length()); // 11

// Calculate the byte count for different encodings
byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");
byte[] utf32Bytes = string.getBytes("UTF-32");

// Print the byte counts
System.out.println(utf8Bytes.length); // 11
System.out.println(utf16Bytes.length); // 24
System.out.println(utf32Bytes.length); // 44

Überlegungen

Bei der Konvertierung von Strings in Bytes ist es wichtig, die gewünschte Zeichenkodierung explizit anzugeben. Das Verlassen auf Standardeinstellungen kann zu unerwarteten Ergebnissen führen, insbesondere wenn mit Sprachen gearbeitet wird, die Nicht-ASCII-Zeichen verwenden.

Beachten Sie außerdem, dass bestimmte Kodierungen, wie z. B. UTF-8, möglicherweise eine Kodierung mit variabler Länge für Zeichen verwenden. Dies bedeutet, dass ein einzelnes Zeichen durch eine unterschiedliche Anzahl von Bytes dargestellt werden kann, was die Bedeutung der Kodierungsauswahl noch weiter unterstreicht.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3