Java の文字列表現を解明する: UTF-16 か修正 UTF-8?
Java の領域では、文字列の内部表現は次のようになります。議論の対象となった。一見信頼できる 2 つの情報源が矛盾した情報を提示しています。
1 つの情報源は、Java が内部テキスト表現に UTF-16 を採用していることを示唆しており、もう 1 つの情報源は UTF-8 の修正バージョンを想定しています。これらの主張のうちどれが当てはまりますか?
答え: 内部表現に UTF-16
Java は、文字列、文字列などのテキストの内部表現に UTF-16 を採用しています。建築業者およびその他の関連構造物。このエンコード システムは、16 ビット Unicode コード単位を利用して、U 0000 ~ U FFFF の範囲内の文字、または UTF-16 コード単位を表します。
シリアル化用に修正された UTF-8
Java は内部的には UTF-16 を優先しますが、シリアル化には UTF-8 の非標準バリアントを使用します。文字列。シリアル化には、Java オブジェクトを保存可能および送信可能な形式に変換することが含まれます。このコンテキストでは、シリアル化された文字列は変更された UTF-8 を使用して表されます。
メモリ内ストレージ: 圧縮文字列
JVM レベルでは、Java は圧縮文字列 (-XX: UseCompressedStrings によってアクティブ化) を使用する場合があります。 UTF-16 エンコーディングは必要ありません。8 ビット ISO-8859-1 エンコーディングを使用して保存できます。この最適化により、特定の種類の文字列のメモリ使用量が削減されます。
Char のバイト使用量
Java の char 変数は、オブジェクト内のパディングの考慮事項に関係なく、一貫して 2 バイトを占有します。 .
コードポイントと文字表現
65535 の制限を超える文字を表すコード ポイントは、1 文字または 2 文字 (つまり、2 バイトまたは 4 バイト) を使用して表現できることに注意することが重要です。
以上がJava は内部的に文字列 (UTF-16 または変更された UTF-8) をどのように表現しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。