文字リテラルと文字コード

文字リテラルは一つの文字の値です。「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

文字リテラルの表し方(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

文字コードを使った文字リテラルの表現(1)

文字コードを使って表した文字リテラルを画面に出力しました。

-- --

文字リテラルを Java のプログラムの中で記述する方法、および文字コードを使った文字リテラルの表しかたについて解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。