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

広告

文字リテラルは一つの文字の値です。「a」や「あ」などが文字リテラルとなります。複数の文字からなる値は文字列リテラルと呼ばれ区別されます。ここでは文字リテラルを Java のプログラムの中で記述する方法、および文字コードを使った文字リテラルの表しかたについて解説します。

文字リテラルの表し方

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

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。