文字リテラルと文字コード
文字リテラルは一つの文字の値です。「a」や「あ」などが文字リテラルとなります。複数の文字からなる値は文字列リテラルと呼ばれ区別されます。ここでは文字リテラルを Java のプログラムの中で記述する方法、および文字コードを使った文字リテラルの表しかたについて解説します。
(Last modified: )
文字リテラルの表し方
Java で文字リテラルを表すにはシングルクォーテーション(')で囲んで表現します。
'a' 'あ'
文字リテラルは 1 文字のリテラルです。複数の文字が含まれている場合はエラーとなります。
'ab' '鉄道'
また空の文字リテラルもエラーとなります。
''
文字リテラルは画面に出力したり、変数に格納することができます。(文字列リテラルは基本データ型の一つである char 型の変数に代入できます。詳しくは別のページで解説します)。
System.out.println('a'); char c = '花';
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample1-1.java という名前で保存します。
class JSample1_1{ public static void main(String[] args){ System.out.println('a'); System.out.println('あ'); } }
文字リテラルの 'a' と 'あ' をそれぞれ画面に出力しています。
コンパイルを行います。
javac -encoding UTF-8 JSample1_1.java
その後で、次のように実行してください。
java JSample1_1
文字リテラルである 'a' と 'あ' をそれぞれ画面に出力しました。
文字コードを使った文字リテラルの表現
コンピューターでは文字を表現するために文字の集合を定義し、一つ一つの文字に対して数値が割り当てています。この数値が文字コードと呼ばれるものです。文字の集合に対して、どのように数値を割り当てるのかを定義したものが文字エンコーディングです。文字エンコーディングにはいくつかの種類があり、 ASCII や Shift_JIS などがあります。そして Java で利用している文字エンコーディングが Unicode(UTF-16) です。
1 つの文字に対して 1 つの文字コードが割り当てられています。 Unicode では 'a' や 'あ' の文字コードは次の通りです。
'a' の文字コードは 0x0061 'あ' の文字コードは 0x3042
Java では文字リテラルの代わりに文字コードを記述することができます。次のように変数に値を代入するような場合、 2 つの文は同じです。
char c1 = 'a'; char c2 = 0x0061;
※ 16進数の 0x0061 の代わりに 10進数で 97 と書いても構いません。
ただし直接画面に出力するような場合には文字コードを直接書いてしまうと、文字コードは単なる数値として扱われてしまうので文字コードがあらわす文字ではなく単なる数値が出力されてしまいます。
System.out.println('a'); // a と出力 System.out.println(0x0061); // 97 と出力
そこで文字コードを使った文字を表す場合には、エスケープシーケンスの一つである '\uxxxx' の形式で表します。 xxxx の部分に文字コードを 16 進数で指定してください。
System.out.println('a'); // a と出力 System.out.println('\u0061'); // a と出力
どちらも文字の 'a' を出力します。
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample1-2.java という名前で保存します。
class JSample1_2{ public static void main(String[] args){ System.out.println('a'); System.out.println(0x0061); System.out.println('\u0061'); } }
コンパイルを行います。
javac -encoding UTF-8 JSample1_2.java
その後で、次のように実行してください。
java JSample1_2
文字コードを使って表した文字リテラルを画面に出力しました。
-- --
文字リテラルを Java のプログラムの中で記述する方法、および文字コードを使った文字リテラルの表しかたについて解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。