ホームページ  >  記事  >  Java  >  Java は文字列を内部的にどのように保存しますか: 変更された UTF-8 または UTF-16?

Java は文字列を内部的にどのように保存しますか: 変更された UTF-8 または UTF-16?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-11 20:25:02434ブラウズ

How Does Java Store Strings Internally: Modified UTF-8 or UTF-16?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。