6日でできる 新Java入門|特殊なリテラル

見えない記号まで使いこなせると、Javaの表現力は一段上がる。特殊なリテラルを覚えて、コードに正確な気の流れを宿そう

Javaの学習を進めていくと、数値や文字列をそのまま書くだけでは足りない場面が少しずつ増えてきます。たとえば、大きな整数を long として扱いたいとき、小数を float として明確に書きたいとき、改行やタブを文字列の中に入れたいときなどです。こうした場面で大事になるのが 特殊なリテラル です。ドラゴンボールの世界でたとえるなら、ただ気を出すだけではなく、どの型の気なのか、どんな軌道で流すのか、どこで区切るのかまで細かく制御する修行に近いです。

リテラルとは、プログラムの中に直接書かれた値のことです。100 や 3.14、A、修行開始 のような値もリテラルですが、Javaにはそれに加えて、型をはっきり示すための記号付きリテラル、8進数や16進数で書かれた数値リテラル、改行やタブを表す特殊な文字列の書き方などがあります。これらは最初は少し記号が多く見えて難しそうですが、意味を知るととても便利です。

この記事では、数値や型に関する特殊なリテラル、進数表記、計算時の型の違い、さらにエスケープシーケンスと呼ばれる特殊文字の使い方を、ドラゴンボール風の世界観になぞらえながら丁寧に見ていきます。例示するプログラムは Lesson06_1.java のみを使い、その中で表示内容や特殊文字の動きをまとめて確認します。これはJavaの修行でいうと、目に見える技だけでなく、見えない細かな気の制御まで意識できるようになる段階です。

リテラルとは何か

まず、リテラルそのものの意味を整理しておきます。リテラルとは、プログラム内に直接書かれた値のことです。変数に入っている値ではなく、その場に書いてある固定の値を指します。

たとえば次のようなものがリテラルです。

100
3.14
'A'
"修行開始"
true

これらは全部、そのままプログラムに書かれた値です。ドラゴンボール風にいえば、修行メモに直接書かれた 戦闘力 100、成功判定 true、技名 修行開始 のようなものです。変数に入れる前の、生の値と考えると分かりやすいです。

リテラルの基本イメージ

種類意味
整数リテラル100整数の値
小数リテラル3.14小数の値
文字リテラル'A'1文字
文字列リテラル"修行開始"文字の並び
真偽値リテラルtrue真または偽

ここで今回の主役になるのは、この中でも 少し特別な書き方を持つリテラル です。

数値と型に関する特殊なリテラル

Javaでは、数値を書いたとき、その書き方によって どの型として扱うか が決まることがあります。何も付けずに書いた整数は基本的に int として扱われますし、小数は基本的に double として扱われます。ただし、場面によっては long や float として明示したいことがあります。

ドラゴンボール風にいうなら、気を放つときに 通常の気 なのか、長距離用の気 なのか、高精度の気 なのかを明示するようなものです。見た目は似ていても、Javaの中では区別されます。

暗黙の型変換と明示的な型指定

書き方解説
int型リテラルそのまま書くと int として扱われやすいint n = 100;
暗黙の型変換代入先が byte や short でも範囲内なら自動変換されることがあるbyte b = 100;
明示的な型指定long、float、double として明確に扱いたいときは末尾に記号を付けるlong l = 1234L;
float f = 3.14F;
double d = 2.718D;

型指定の具体例

long largePower = 1234L;
float speed = 3.14F;
double exactRate = 2.718D;

このように、末尾に L、F、D を付けることで、Javaに この型で扱ってください と伝えられます。

範囲外はエラーになる

byte b = 200;

これはエラーになります。byte 型に入れられる範囲を超えているからです。箱の大きさに合わない値は入れられない、という感覚で覚えると分かりやすいです。

数値リテラルの進数指定

Javaでは、整数リテラルを10進数だけでなく、8進数や16進数で書くこともできます。普段の学習では10進数をよく使いますが、プログラムの世界ではビットやメモリ、色の指定、文字コードなどで16進数が出てくることがあるため、知っておくと役立ちます。

ドラゴンボール風にたとえるなら、同じ戦闘力でも 地球式の数え方、宇宙船の内部表示、スカウターの特殊表示 など、表記が違うだけで中身は同じというイメージです。

進数表記の違い

表記意味
10進数普通の書き方int n = 15;
8進数先頭に 0 を付けるint n = 012;
16進数先頭に 0x を付けるint n = 0xA5;

進数指定の例

int dec = 255;
int oct = 0377;
int hex = 0xFF;

この3つは、表記は違っていても、どれも同じ 255 を表しています。

ここで初心者が注意したいのは、先頭の 0 に意味があることです。うっかり 012 と書くと、10進数の12ではなく、8進数として解釈されます。見た目が似ているだけに気をつけたいポイントです。

計算式と型指定の注意

数値リテラルでは、計算するときの型にも注意が必要です。とくに割り算は、整数同士か、小数同士かで結果が変わります。

例:

double d1 = 10 / 3;
double d2 = 10D / 3D;
System.out.println("d1=" + d1 + " d2=" + d2);

実行結果

d1=3.0 d2=3.3333333333333335

d1 は、10 も 3 も整数として計算されるため、結果は 3 になります。そのあとで double に入るので 3.0 です。一方 d2 は、最初から double 型として計算されるため、小数まで含めた結果になります。

ドラゴンボール風にいえば、整数同士の割り算は 修行回数を丸ごと数える感覚、小数同士の割り算は 気の細かな割合まで測る感覚です。どこまで精密に扱いたいかで型の指定が変わります。

エスケープシーケンスとは何か

次に、特殊文字について見ていきます。Javaの文字列の中には、そのままでは書きにくい特別な意味を持つ文字があります。たとえば改行、タブ、バックスラッシュ、ダブルクォートなどです。こうした文字を表すために使うのが エスケープシーケンス です。

ドラゴンボール風にたとえるなら、これは目に見えない気の流れを細かく指示する記号のようなものです。見た目にそのまま現れないけれど、表示結果にしっかり影響します。

よく使う特殊文字

特殊記号意味
\bバックスペース
\tタブ
\n改行
\fフォームフィード
\r復帰

初心者のうちは、まず \n と \t をしっかり覚えておくと十分役立ちます。\n は改行、\t は横にそろえるためのタブです。

エスケープが必要な記号

文字列の中で、そのまま書くとJavaが意味を取り違えてしまう記号もあります。たとえば " は文字列の区切りに使うため、文字として表示したいときには特別な書き方が必要です。

特殊な記号の表現

表示したい文字書き方説明
''シングルクォート
""ダブルクォート
\\バックスラッシュ

たとえば 文字列の中に "修行開始" と表示したい場合は、そのまま書くと文字列の区切りと勘違いされるので、"修行開始" のように書きます。

特殊文字をまとめて確認するプログラム

修行メッセージ風の出力で特殊文字の働きを確認してみます。

ファイル名:Lesson06_1.java

public class Lesson06_1 {
    public static void main(String[] args) {
        // 特殊な文字の表示を確認する
        System.out.println("道しるべの記号: \\");
        System.out.println("合図の文字: \'修\'");
        System.out.println("技の名前: \"気を整える\"");
        System.out.println("改行の確認:\nここから次の行へ進みます。");
        System.out.println("修行順序:\t一歩目\t二歩目\t三歩目");

        // 型の違いが計算結果に影響する例
        double rough = 10 / 3;
        double exact = 10D / 3D;
        System.out.println("整数どうしの計算結果: " + rough);
        System.out.println("小数として計算した結果: " + exact);

        // 進数表記の例
        int dec = 15;
        int oct = 017;
        int hex = 0x0F;
        System.out.println("10進数: " + dec);
        System.out.println("8進数: " + oct);
        System.out.println("16進数: " + hex);
    }
}

実行結果

道しるべの記号: \
合図の文字: '修'
技の名前: "気を整える"
改行の確認:
ここから次の行へ進みます。
修行順序:	一歩目	二歩目	三歩目
整数どうしの計算結果: 3.0
小数として計算した結果: 3.3333333333333335
10進数: 15
8進数: 15
16進数: 15

このプログラムでは、特殊文字の表示、改行、タブ、整数と小数の計算結果の違い、そして進数表記の違いまで一度に確認できます。ひとつずつ見ると難しそうでも、実際の出力と対応させるとかなり分かりやすくなります。

特殊文字で特に覚えておきたいもの

特殊文字はいくつかありますが、最初に優先して覚えたいのは次の3つです。

よく使うもの

記号役割よく使う場面
\n改行文章を次の行へ送る
\tタブ項目を横にそろえる
"ダブルクォート表示文字列中に " を出したいとき

この3つは画面表示でかなりよく使います。特に \n は print や println の説明ともつながるので、すでに見た内容と合わせて理解すると定着しやすいです。

特殊なリテラルを図で整理

下図は、Javaの特殊なリテラルを 数値に関するもの と 文字列に関するもの に分けて整理したものです。左側では L、F、D のような型指定や 8進数、16進数の表記を示し、右側では \n、\t、\、" のようなエスケープシーケンスを示します。見た目の記号が違うだけでなく、それぞれが 型を明確にするための記号 なのか、表示を制御するための記号 なのかが分かりやすくなります。

↓クリックすると拡大表示されます。

この図から分かること

この図を見ると、特殊なリテラルには 数値の型や表記に関するもの と 文字列表示を制御するもの の2系統があることが整理できます。また、同じ記号のように見えても、役割が違うことが分ります。

特殊文字の出力結果を図で整理

改行やタブは、コードだけ見ても最初は想像しづらいことがあります。

下図は、\n、\t、\、"、' がそれぞれ画面表示でどう働くかを、コードと出力結果を対応させて示したものです。たとえば \n は次の行へ送る、\t は横方向に間隔を空ける、\ はバックスラッシュそのものを出す、といった動きがひと目で分かります。

↓クリックすると拡大表示されます。

この図から分かること

この図を見ると、コード中の特殊記号が、画面上ではどんな動きや表示になるのかを対応づけて理解できます。とくに \n や \t のように見えない動きをする記号は、結果とセットで見ることで覚えやすくなります。

特殊なリテラルを知ると、コードの表現がかなり正確になる

Javaでは、ただ値を書くだけでなく、その値を どんな型で扱いたいか、どんな見え方で表示したいか まで細かく調整できます。そのために使うのが特殊なリテラルです。long にしたいときは L、float にしたいときは F、進数を変えたいときは 0 や 0x、改行やタブを入れたいときは \n や \t というように、少しの記号で意味が大きく変わります。

ドラゴンボールの修行でも、ただ大きな気を出すだけではなく、どれだけ細かく気を整えられるかで技の完成度が変わります。Javaの特殊なリテラルも同じです。目立たない小さな記号ですが、理解して使えるようになると、コードの正確さや表現力が大きく上がります。