Java の内部文字列表現: UTF-8 または UTF-16 が変更されましたか?
Java で文字列の内部表現を調査すると、情報が矛盾しますが生じます。一部の情報源は Java が Modified UTF-8 を使用していると主張していますが、他の情報源は Java が UTF-16 を使用していると主張しています。この矛盾を明確にするために、詳細を調べてみましょう。
Oracle の Java ドキュメントによると、Java プラットフォームは Unicode 文字セットに大きく依存しています。したがって、プリミティブ char データ型は符号なし 16 ビット整数を表します。この整数は、特定の範囲内の Unicode コード ポイント、または UTF-16 のコード単位を表すことができます。重要なのは、文字列、文字配列、CharSequence インターフェイスの実装などの文字シーケンスは、Java ではすべて UTF-16 シーケンスです。
ただし、JVM 実装では圧縮文字列を利用できることに注意することが重要です。 -XX: UseCompressedStrings (特定の Java 6 アップデートのデフォルト設定) が有効な場合、UTF-16 エンコードを必要としない文字列は 8 ビット形式、つまり ISO-8859-1 で保存される可能性があります。
Java での文字列のシリアル化に関しては、UTF-8 がデフォルトのエンコーディングです。したがって、文字列がシリアル化されるときは、UTF-8 が使用されます。
最後に、Java は 2 バイトを使用して char を表現し、最大 65,535 のコード ポイントを許可します。この制限を超えるコード ポイントは 2 文字を占有するため、4 バイトが消費されます。
以上がJava は文字列を内部的にどのように保存しますか: 変更された UTF-8 または UTF-16?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。