「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java 文字列は何バイトを占めますか?その答えがそのエンコーディングに依存するのはなぜですか?

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

2024 年 11 月 8 日に公開
ブラウズ:781

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() を使用して文字列をバイト配列に変換します。メソッド:

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

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

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

文字列 "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

考慮事項

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

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3