Heim  >  Artikel  >  Java  >  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?

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 04:42:03504Durchsuche

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

Berechnen der Byteanzahl einer Zeichenfolge in Java

In Java bestehen Zeichenfolgen 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 Byte-Anzahl zu berechnen, können wir die Zeichenfolge mit der Methode getBytes() in ein Byte-Array konvertieren:

<code class="java">byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");</code>

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

<code class="java">int utf8ByteCount = utf8Bytes.length;
int utf16ByteCount = utf16Bytes.length;</code>

Beispiel

Bedenken Sie die Zeichenfolge „Hello World“:

<code class="java">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</code>

Ü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 bei der Arbeit mit Sprachen, 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.

Das obige ist der detaillierte Inhalt vonWie viele Bytes belegt ein Java-String und warum hängt die Antwort von seiner Kodierung ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn