Heim >Java >javaLernprogramm >Wie viele Bytes belegt ein Java-String und warum hängt die Antwort von seiner Kodierung ab?
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!