Java 文字列は何バイトを占めますか?その答えがそのエンコーディングに依存するのはなぜですか?

Linda Hamilton
リリース: 2024-10-26 04:42:03
オリジナル
571 人が閲覧しました

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

Java での文字列のバイト数の計算

Java では、文字列は文字で構成されており、文字列のバイト表現は次のように異なります。選択したエンコーディング。文字列内のバイト数を決定するには、バイトへの変換に使用される文字エンコーディングを考慮する必要があります。

エンコーディングに依存するバイト数

理解の鍵バイト数とは、エンコーディングが異なると、同じ文字列でもバイト サイズが異なることを意味します。たとえば、UTF-8 でエンコードされた文字列は 1 文字あたり 1 バイトを必要とする場合がありますが、UTF-16 でエンコードされた文字列は 1 文字あたり 2 バイトが必要になる場合があります。

文字列をバイトに変換する

バイト数を計算するには、getBytes() メソッドを使用して文字列をバイト配列に変換できます。

<code class="java">byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");</code>
ログイン後にコピー

結果のバイト配列の長さによって、その特定のエンコーディングのバイト数が得られます。 :

<code class="java">int utf8ByteCount = utf8Bytes.length;
int utf16ByteCount = utf16Bytes.length;</code>
ログイン後にコピー

文字列「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>
ログイン後にコピー

考慮事項

文字列をバイトに変換する場合は、目的の文字エンコーディングを明示的に指定することが重要です。デフォルトに依存すると、特に非 ASCII 文字を使用する言語を使用する場合に、予期しない結果が生じる可能性があります。

また、UTF-8 などの特定のエンコーディングでは、文字に可変長エンコーディングが使用される場合があることに注意してください。これは、単一の文字がさまざまなバイト数で表現できることを意味し、エンコード選択の重要性がさらに強調されます。

以上がJava 文字列は何バイトを占めますか?その答えがそのエンコーディングに依存するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート