「char」は基本型で、16bitのサイズになります。「char」は1文字を表現するデータ型です。
char型で文字を扱う際は、値を「'(シングルクォーテーション)」で囲います。
char x = 'a'; char y = 'ぬ';
コンピュータは数値を扱う機械です。そのため文字も数値で扱います。Javaでは16bitに対応した文字の表を使い、文字を表現しています。この表のことを「文字コード表」と呼びます。そして、文字の表に対応した数値のことを「文字コード」と飛びます。
Javaでは「16ビットUnicode」という文字コードを利用しています。
char型では、この文字コードを指定することでも、文字を変数に格納することができます。
char x = 97; // 97は「a」 char y = 12396; // 12396は「ぬ」
charの中身は、文字コード表に対応した数値です。そのため、数値と相互変換することができます。
System.out.println((int)'a'); // 97と出力 System.out.println((int)'ぬ'); // 12396と出力 System.out.println((char)97); // aと出力 System.out.println((char)12396); // ぬと出力 System.out.println((char)0x0061); // aと出力 System.out.println((char)0x306C); // ぬと出力
数値を16進数で書く場合は、数値の先頭に「0x」と付けて、16進数の数値(0~F)を後に続けます。
10進数の「97」は、16進数で書くと「0x61」になります。10進数の「12396」は、16進数で書くと「0x306C」になります。
charは16bitなので、「0x0000」のように、16進数4桁で文字を表すことができます。
特殊な文字は「\(バックスラッシュ、Windowsでは半角円記号)」を頭につけて表記します(この文字はフォントによって、バックスラッシュに見えたり、半角英記号に見えたりします)。
たとえば「改行」は「\n」と書きます(「n」は「New Line」の頭文字)。「タブ文字」は「\t」と書きます。
また「'(シングルクォーテーション)」は、「'''」と3つ並べて書くと、2つ目の「'」で閉じてしまいます。こういった際は「'\''」と書きます。
こういった方法で書いた文字は「エスケープシーケンス」と呼びます。
char c1 = '\n'; // 改行 char c2 = '\t'; // タブ文字 char c1 = '\''; // '(シングルクォーテーション)
Javaのchar型は16bitです。しかし、時に16bitのサイズで表せない文字もあります。そういった文字はchar2個分(32bit)で表現されています。こういった「2つのcharで1つの文字を表す」文字を「サロゲートペア」と呼びます。
サロゲートペアの文字は、charで直接指定することはできません。今後出てくる文字列内に含めて書くことになります。
また、サロゲートペアの文字は、普段使用しないような難しい文字が多いです。普段の文章では、特に気にする必要はないでしょう。