char 値は JVM でどのように表されますか? まあ言ってみれば
char ch = 'c';
ch の値は、JVM で16 ビットの符号なし整数としてどのように表されますか?
char 値は JVM でどのように表されますか? まあ言ってみれば
char ch = 'c';
ch の値は、JVM で16 ビットの符号なし整数としてどのように表されますか?
長すぎる; 読んでいません。1 . Java の文字は UTF-16 2を使用して表されます。名前が示すように、1 文字はサイズ3の 16 ビットです。a のデフォルト値は 0 です。
char
sに関するJava ドキュメントを引用するにはchar
:
Unicode 文字表現
char データ型 (したがって Character オブジェクトがカプセル化する値) は、文字を固定幅の 16 ビット エンティティとして定義した元の Unicode 仕様に基づいています。Unicode 標準はその後、表現に 16 ビット以上を必要とする文字を許可するように変更されました。有効なコード ポイントの範囲は、Unicode スカラー値として知られる U+0000 から U+10FFFF になりました。(Unicode 標準の U+n 表記の定義を参照してください。)
U+0000 から U+FFFF までの文字セットは、Basic Multilingual Plane (BMP) と呼ばれることがあります。コード ポイントが U+FFFF より大きい文字は補助文字と呼ばれます。Java 2 プラットフォームは、 char 配列と String および StringBuffer クラスでUTF-16 表現を使用します。この表現では、補助文字は char 値のペアとして表されます。最初は高サロゲート範囲 (\uD800-\uDBFF) から、2 番目は低サロゲート範囲 (\uDC00-\uDFFF) からです。
したがって、char 値は、サロゲート コード ポイントを含む Basic Multilingual Plane (BMP) コード ポイント、またはUTF-16 エンコーディングのコード単位を表します。int 値は、補助コード ポイントを含むすべての Unicode コード ポイントを表します。int の下位 (最下位) 21 ビットは Unicode コード ポイントを表すために使用され、上位 (最上位) 11 ビットはゼロでなければなりません。特に指定がない限り、補助文字と代理文字値に関する動作は次のとおりです。
char 値のみを受け入れるメソッドは、補助文字をサポートできません。サロゲート範囲からの char 値を未定義の文字として扱います。たとえば、 Character.isLetter('\uD840') は false を返しますが、この特定の値の後に文字列内の下位サロゲート値が続くと文字を表すことになります。int 値を受け入れるメソッドは、補助文字を含むすべての Unicode 文字をサポートします。たとえば、Character.isLetter(0x2F81A) は、コード ポイント値が文字 (CJK 表意文字) を表すため、true を返します。J2SE API ドキュメントでは、Unicode コード ポイントは U+0000 ~ U+10FFFF の範囲の文字値に使用され、Unicode コード単位はUTF-16 エンコーディングのコード単位である 16 ビット char 値に使用されます。. Unicode 用語の詳細については、Unicode Glossary を参照してください。
Achar
は、2 バイト整数である UTF-16 コードポイントとして格納されます。
したがって、小文字の「c」は 99 (10 進数) または 0x0063 (16 進数) です。
1. char は、Javaでは 16 ビットの Unicode値として表されます。
2. char のデフォルト値は'\u0000'です