Java の char が占めるバイト数: 1. Java の内部コードの char は UTF16 でエンコードされ、1 つの char は 2 バイトを占有します; 2. Java の外部コードの char は UTF8 でエンコードされます. 1文字は[1~6]バイトを占めます。
#この問題について説明する前に、Unicode と UTF を区別する必要があります。
unicode: 統一された文字番号。文字と数字の間のマッピングのみを提供します。シンボルの数は増え続けており、100 万を超えています。詳細: [https://zh.wikipedia.org/zh-cn/Unicode]
UTF: Unicode 変換形式。 Unicode における数値のエンコード方法を定義します。 UTF8 と UTF16 は 2 つの実装方法です。このうち、utf8 は可変長表現であり、長さは 1 ~ 6 バイト、utf16 は可変長表現で、長さは 2 バイトまたは 4 バイトです。詳細: UTF8 [https://zh.wikipedia.org/zh-cn/UTF-8] UTF16 [https://zh.wikipedia.org/zh-cn/UTF-16]
#次に、内部エンコーディングと外部エンコーディングを区別する必要があります。
- 内部コード: 特定の言語の実行時にメモリ内で文字と文字列をエンコードする方法。
- 外部コード: 内部コードを除くすべてが外部コードです。
ソースコードのコンパイルにより生成されるオブジェクトコードファイル(実行ファイルまたはクラスファイル)のエンコード方式は外部コードに属することに注意してください。
最初に内部コードを見てみましょう
JVM の内部コードは UTF16 を使用します。初期の頃、UTF16 は固定長の 2 バイト エンコードを使用してエンコードされていました。2 バイトで 65536 個のシンボルを表現できます (実際にはこれよりも少ないシンボルを表現できます)。これは、当時の Unicode のすべての文字を表現するのに十分でした。ただし、Unicode の文字数が増加すると、2 バイトではすべての文字を表現できなくなり、UTF16 では 2 バイトまたは 4 バイトを使用してエンコードを完了します。この状況に対処するために、Java は前方互換性要件を考慮して、4 バイトを必要とする文字を表す char のペアを使用します。したがって、Java の char は 2 バイトを使用しますが、一部の文字はそれを表すために 2 つの文字を必要とします。
外部コード
Java のクラス ファイルは、UTF8 を使用して文字を格納します。つまり、クラス内の文字は 1 ~ 6 バイトを占めます。
Java のシリアル化中、文字も UTF8 でエンコードされ、1 ~ 6 文字が占められます。
概要:
- Java の内部コード (実行メモリ) の文字は UTF16 を使用してエンコードされます。1 つの文字は 2 バイトを占有しますが、一部の文字は 2 バイトで表現する必要があります。文字。したがって、1 文字は 2 バイトまたは 4 バイトを占有します。 Java 中国語および外国語コードの
- char は UTF8 を使用してエンコードされ、1 文字は 1 ~ 6 バイトを占めます。
- UTF16 エンコードでは、英語の文字は 2 バイトを占め、ほとんどの中国語文字 (特に一般的に使用される漢字) は 2 バイトを占め、個々の中国語文字 (Unicode でエンコードされた中国語文字は後で追加されます) ) 、通常はめったに使用されない珍しい単語) は 4 バイトを占めます。
- UTF8 エンコードでは、英語の文字は 1 バイトを占め、ほとんどの中国語の文字は 3 バイトを占め、一部の中国語の文字は 4 バイトを占めます。
#EOF
関連する無料学習の推奨事項: Java 基本チュートリアル
以上がJavaではcharは何バイトを占めますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。