マンガで分かる Java入門講座

第6章 文字列と配列
6-4. 文字 char型

文字を格納する型である「char」型について紹介します。

● char

 「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と数値の相互変換

 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進数の数字の書き方

 数値を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で直接指定することはできません。今後出てくる文字列内に含めて書くことになります。

 また、サロゲートペアの文字は、普段使用しないような難しい文字が多いです。普段の文章では、特に気にする必要はないでしょう。


この講座のマンガ部分は「箱人形マンガ(Box Comic) 」で作成しています。
作成:2013/05/24  更新:2015/08/09  [Permalink]