リテラル

リテラルとは

Javaでは10や"Hello Java World!"のような値の直接的表現のことをリテラルと呼びます。 これらは一定のものであり、変化しません。
リテラルには文字リテラル文字列リテラル数値リテラル論理値リテラル等が有ります。 それぞれの説明に入る前に、具体例を見ておきましょう。 次のコードは上から順番に文字リテラル、文字列リテラル、数値リテラル、論理値リテラルの具体例を出力するものです。

LiteralSample01.java
class LiteralSample01 {
    public static void main(String[] args){
        System.out.println('A');//文字リテラル
        System.out.println("Hello Java World!");//文字列リテラル
        System.out.println(10);//数値リテラル
        System.out.println(true);//論理値リテラル
    }
}

ch03フォルダの中にLiteralSample01フォルダを作りましょう。次にソースコードを入力します。 上記のコードをそのままコピペしてもかまいません。 そしてLiteralSample01フォルダの中にLiteralSample01.javaとして保存し、コンパイル・実行してください。
これ以降はこのような説明は省略しますが、できるだけ実際にコンパイル・実行するよう心掛けてください。 ときにはプログラムを書き換えて結果を比べてみるのもいいでしょう。そういう試行錯誤こそが上達の近道です。

LiteralSample01の実行結果
A
Hello Java World!
10
true

文字リテラル

文字リテラルは1文字だけを表すものです。' 'でくくって表します。LiteralSample01の実行結果を見ればわかるように、表示されるのは文字そのものだけで、'(シングルクォート)は表示されません。'は文字であることを示す目印に過ぎないのです。
文字リテラルの例を示します。

'A'
'a'
'あ'

文字列リテラル

文字列リテラルは、文字リテラルと違って任意の個数の文字の並びを表します。" "でくくって表します。LiteralSample01の実行結果を見ればわかるように、表示されるのは文字列そのものだけで、"(ダブルクォート)は表示されません。やはり"は文字列であることを示す目印に過ぎないからです。
文字列リテラルの例を示します。

"Hello Java World!"
"こんにちは、Javaの世界"
"A"
""

任意の個数と言いましたように、0個の文字からなる文字列""というのも有るのです。

文字リテラルは' 'で、文字列リテラルは" "でくくって表す。

エスケープシーケンス

文字リテラルや文字列リテラルを表すときに、改行やタブ、'や"などの特殊な文字を表す方法としてエスケープ・シーケンスが用意されています。次の表はエスケープ・シーケンスの一覧です。

表 3-1 : エスケープ・シーケンス
エスケープ・シーケンス 意味
\b バックスペース
\t 水平タブ
\n 改行
\f 改ページ
\r 復帰
\' '
\" "
\\ \
\XXX 8進数XXXの文字コードを持つ文字
\uXXXX 16進数XXXXの文字コードを持つ文字

本当にエスケープ・シーケンスがうまく表示されることを確かめてみましょう。

LiteralSample02.java
class LiteralSample02 {
    public static void main(String[] args){
        System.out.println("タブ(\t)を表示");
        System.out.println("改行(\n)を表示");
        System.out.println("シングルクォート(\')を表示");
        System.out.println("ダブルクォート(\")を表示");
    }
}
LiteralSample02の実行結果
タブ(     )を表示
改行(
)を表示
シングルクォート(')を表示
ダブルクォート(")を表示

どうです。ちゃんと表示されましたか。

特殊な文字はエスケープ・シーケンスで表す。

数値リテラル

数値リテラルは何かの文字でくくることはありません。数字そのもので表現します。数値リテラルには整数リテラル浮動小数点数リテラルがあります。
整数リテラルの例を示します。

10
0
-4000

浮動小数点数リテラルの例を示します。

123.45
0.0
.02

数値リテラルは10進数以外の表記もできます。0から始まる数値リテラルは8進数であることを表し、0xから始まる数値リテラルは16進数であることを表します。
次のコードで試してみましょう。

LiteralSample03.java
class LiteralSample03 {
    public static void main(String[] args){
        System.out.println(10);
        System.out.println(011);
        System.out.println(0x10);
        System.out.println(0xb);
    }
}
LiteralSample03の実行結果
10
9
16
11

この結果は何を意味しているのでしょうか。実は何進数で表しても10進数に直してから出力しているのです。
10進数の10(ジュウ)は10進数に直してもやはり10(ジュウ)です。当たり前ですね
8進数の011(イチイチ)は10進数に直すと9(キュウ)になります。
16進数の0x10(イチゼロ)は10進数に直すと16(ジュウロク)になります。
16進数の0xbは10進数に直すと11(ジュウイチ)になります。

実際には8進数や16進数を利用することはほとんどないでしょうから、今のところはわからなくても気にする必要は有りません。そういう表し方もあるんだな位に心に留めておけばいいでしょう。

論理値リテラル

論理値リテラルは、正しいことをtrue、正しくないことをfalseで表します。 たった2つの値しか表さないという点が他のリテラルと大きく異なります。 しかしながら、後で学習する条件分岐や繰り返し処理などと関連して、プログラミングにおいて極めて重要な役割を果たします。

その他のリテラル

参照型変数が何も参照しないことを表す空リテラル(null literal)も有ります。これについては後ほど詳しく紹介することにいたしましょう。