
Java道|Java数値リテラルの基本
数字はただの数字に見えても、Javaでは書き方で意味が変わる。
数値リテラルの基本を知って、10進数・8進数・16進数を読み分けよう。
Javaでは、文字や文字列だけでなく、数値そのものをコードの中に直接書くことができます。
たとえば、次のような値です。
1
100
3.14
5.0これらのように、Javaのコードの中に直接書かれた数値を 数値リテラル といいます。
数値リテラルは、計算をするとき、回数を数えるとき、条件を比べるとき、データの位置を指定するときなど、Java学習のさまざまな場面で登場します。だからこそ、早い段階で 数値はどのように書くのか を整理しておくことが大切です。
鬼滅の刃の世界観にたとえるなら、数値リテラルは 技の威力や回数を示す力札 のようなものです。
| Javaの値 | 意味 | 鬼滅風のたとえ |
|---|---|---|
| 12 | 10進数の数値 | 普通の力札 |
| 012 | 8進数の数値 | 8の型で読む力札 |
| 0x12 | 16進数の数値 | 16の型で読む力札 |
| "12" | 文字列 | 数字に見える文字の巻物 |
| '1' | 文字 | 1という形の1文字札 |
Javaでは、数値は基本的にそのまま数字を書きます。
文字列のように " " で囲んだり、文字のように ' ' で囲んだりはしません。
数値リテラルとは何か
数値リテラルとは、Javaのコードの中に直接書かれた数値のことです。
たとえば、次のようなものが数値リテラルです。
1
3
100
2.1
3.14
5.0これらは、数値そのものを表しています。
| 書き方 | Javaでの扱い |
|---|---|
| 100 | 数値リテラル |
| "100" | 文字列リテラル |
| '1' | 文字リテラル |
ここで大切なのは、Javaでは 数値として書かれているのか、文字列として書かれているのか、文字として書かれているのか をきちんと区別するということです。
100
"100"
'1'この3つは見た目が似ていますが、Javaでは別物です。
鬼滅風にたとえるなら、100 は威力100の力札です。
"100" は 100 と書かれた巻物です。
'1' は 1 という形の1枚の文字札です。
見た目が数字に見えても、囲み方が違えば役割も変わります。
数値には大きく2種類ある
Javaで扱う数値リテラルには、大きく分けて次の2種類があります。
| 種類 | 例 | 特徴 |
|---|---|---|
| 整数リテラル | 1、3、100、2026 | 小数点がない |
| 浮動小数点数リテラル | 2.1、3.14、5.0、0.5 | 小数点がある |
整数リテラル
整数リテラルは、小数点を含まない数値です。
1
3
100
2026これらはすべて整数です。
鬼滅風に言えば、整数リテラルは「1回」「3回」「100の力」のように、きっちり数えられる力札です。
浮動小数点数リテラル
浮動小数点数リテラルは、小数点を含む数値です。
2.1
3.14
5.0
0.5これらは小数を表します。
鬼滅風にたとえるなら、浮動小数点数リテラルは「3.14の間合い」「0.5歩の調整」のように、細かい量を表す力札です。
数値は ' ' や " " で囲まない
数値リテラルで最初にしっかり押さえたい基本があります。
数値は ' ' や " " で囲みません。
たとえば、10 という数値を書きたいときは、次のようにそのまま書きます。
10これを "10" と書くと、Javaは数値ではなく文字列として扱います。
また、'1' と書くと、それは数値ではなく、1 という形の文字になります。
| 書き方 | 意味 |
|---|---|
| 10 | 数値 |
| "10" | 文字列 |
| '1' | 文字 |
数値として扱いたいなら、囲み記号を付けずに数字を書きます。
数値リテラルを確認する
ファイル名:Sample6.java
// いろいろな進数の整数を表示するプログラム
class Sample6
{
public static void main(String[] args)
{
System.out.println("10進数の12は " + 12 + " です。");
System.out.println("8進数の12は " + 012 + " です。");
System.out.println("16進数の12は " + 0x12 + " です。");
System.out.println("16進数のAは " + 0xA + " です。");
}
}このプログラムを実行すると、画面には次のように表示されます。
10進数の12は 12 です。
8進数の12は 10 です。
16進数の12は 18 です。
16進数のAは 10 です。この結果から分かるのは、Javaでは同じように見える数字でも、書き方によって 何進数として読むか が変わるということです。
| コードでの表記 | Javaでの読み方 | 画面表示 |
|---|---|---|
| 12 | 10進数の12 | 12 |
| 012 | 8進数の12 | 10 |
| 0x12 | 16進数の12 | 18 |
| 0xA | 16進数のA | 10 |
鬼滅風に言えば、同じ 12 という札に見えても、普通の力札なのか、8の型で読む札なのか、16の型で読む札なのかで、実際の威力が変わるということです。
10進数はふだん使っている数の書き方
私たちが日ごろ使っている数の書き方は 10進数 です。
たとえば、次のような数です。
12
100
250Javaでは、整数に特別な印を付けずに書くと、基本的に10進数として扱われます。
Sample6.javaでは、次の部分です。
System.out.println("10進数の12は " + 12 + " です。");ここで書かれている 12 は、そのまま10進数の12です。
実行結果は次のようになります。
10進数の12は 12 です。10進数は、0から9までの数字を使って数を表します。
9の次で桁が繰り上がるのが特徴です。
| 10進数の特徴 | 内容 |
|---|---|
| 使う数字 | 0〜9 |
| 桁が上がるタイミング | 9の次 |
| Javaでの書き方 | 12、100、250 のように普通に書く |
8進数は先頭に 0 をつける
Javaでは、整数を8進数で表すこともできます。
8進数で書きたいときは、数値の先頭に 0 をつけます。
012これは10進数の12ではありません。
Javaでは、先頭に 0 が付いているため、8進数の12として扱われます。
8進数では、0〜7 の数字を使います。
そのため、8進数の12は、次のように考えます。
1×8 + 2 = 10つまり、8進数の12は、10進数では10です。
Sample6.javaでは、次の部分です。
System.out.println("8進数の12は " + 012 + " です。");実行結果は次のようになります。
8進数の12は 10 です。
| 表記 | 意味 |
|---|---|
| 12 | 10進数の12 |
| 012 | 8進数の12、10進数では10 |
ここはとても間違えやすいポイントです。
鬼滅風に言えば、先頭の 0 は「この札は8の型で読む」という印です。
普通の 12 と同じ見た目に近くても、先頭に 0 があるだけで読み方が変わります。
16進数は先頭に 0x をつける
Javaでは、整数を16進数で表すこともできます。
16進数で書くときは、先頭に 0x をつけます。
0x12
0xA
0xF16進数では、0〜9 に加えて、A〜F も使います。
| 16進数の記号 | 10進数での意味 |
|---|---|
| A | 10 |
| B | 11 |
| C | 12 |
| D | 13 |
| E | 14 |
| F | 15 |
Sample6.javaでは、次の2つが16進数の例です。
System.out.println("16進数の12は " + 0x12 + " です。");
System.out.println("16進数のAは " + 0xA + " です。");0x12 は、次のように考えます。
1×16 + 2 = 18そのため、画面には18と表示されます。
16進数の12は 18 です。また、0xA は10を表します。
16進数のAは 10 です。| 表記 | 意味 | 10進数での値 |
|---|---|---|
| 0x12 | 16進数の12 | 18 |
| 0xA | 16進数のA | 10 |
| 0xF | 16進数のF | 15 |
| 0x10 | 16進数の10 | 16 |
鬼滅風に言えば、0x は「この札は16の型で読む」という印です。
0xA は、Aという文字に見えますが、16進数では10を表します。
数値と文字列をつなぐときは + を使う
Sample6.javaでは、文字列と数値を組み合わせて画面に出力しています。
たとえば、次の部分です。
"10進数の12は " + 12 + " です。"これは、次の3つをつないでいます。
| 部分 | 種類 |
|---|---|
| "10進数の12は " | 文字列 |
| 12 | 数値 |
| " です。" | 文字列 |
ここでは、+ を使って文字列と数値をつないでいます。
今の段階では、+ は 表示したい内容をつなぐために使っている くらいの理解で大丈夫です。
画面出力では、数値だけを出すよりも、説明文と一緒に表示したいことがよくあります。
10進数の12は 12 です。このように表示すると、数値の意味が分かりやすくなります。
いろいろな表記をしても画面には10進数で表示される
Sample6.javaでは、コードの中に10進数、8進数、16進数が出てきます。
12
012
0x12
0xAしかし、実行結果ではどれも通常の10進数の形で表示されます。
| コードでの表記 | 表している数 | 画面表示 |
|---|---|---|
| 12 | 10進数の12 | 12 |
| 012 | 8進数の12 | 10 |
| 0x12 | 16進数の12 | 18 |
| 0xA | 16進数のA | 10 |
これは、Javaがそれぞれの表記を数値として読み取ったあと、画面には分かりやすい10進数の形で出力しているからです。
つまり、コードにどう書いたかと、画面にどう表示されるかは、必ずしも同じではありません。
鬼滅風に言えば、力札には8の型や16の型で書かれていても、修行結果として表示されるときには、通常の力の値として示されるようなものです。
整数には8進数や16進数の表記も使える
ここまでの内容で、特に大切なのは次の2点です。
| 大切なポイント | 内容 |
|---|---|
| 数値は ' ' や " " で囲まない | 囲むと文字や文字列になる |
| 整数は8進数や16進数でも書ける | 先頭の形で読み方が変わる |
Javaでは、整数リテラルをいろいろな表記方法で書けます。
ふだんは10進数を使うことが多いですが、コードの中では8進数や16進数が出てくることもあります。
| 表記方法 | 書き方 | 例 |
|---|---|---|
| 10進数 | そのまま書く | 12 |
| 8進数 | 先頭に0をつける | 012 |
| 16進数 | 先頭に0xをつける | 0x12 |
数値を見るときは、数字そのものだけでなく、先頭に何が付いているか まで確認しましょう。
2進数とは何か
コンピュータの内部では、数値は 2進数 と深く関係しています。
2進数では、0 と 1 の2種類だけを使って数を表します。
10進数では、0〜9を使い、9の次で桁が繰り上がります。
2進数では、0と1だけを使うため、1の次で桁が繰り上がります。
| 10進数 | 2進数 |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 2 | 10 |
| 3 | 11 |
| 4 | 100 |
10進数の20は、2進数では次のようになります。
10100
2進数はコンピュータにとって基本的な表し方ですが、人間が読むには桁が長くなりやすいです。
鬼滅風にたとえるなら、2進数はコンピュータ内部の隠密暗号です。
0 と 1 だけで正確に表せる一方で、人間が読むには少し長くなりやすいのです。
なぜ8進数や16進数が使われるのか
コンピュータは内部で2進数を使います。
しかし、2進数は桁が長くなりやすいため、人間が読むには少し大変です。
そこで、2進数と相性がよい 8進数 や 16進数 が使われます。
| 進数 | 使う記号 | 特徴 |
|---|---|---|
| 2進数 | 0、1 | コンピュータ内部と相性がよい |
| 8進数 | 0〜7 | 2進数を短く表しやすい |
| 16進数 | 0〜9、A〜F | コンピュータ関連でよく使われる |
| 10進数 | 0〜9 | 人間が普段使う |
特に16進数は、コンピュータ関連の分野でよく登場します。
今の段階では、細かな変換をすべて覚えなくても大丈夫です。
まずは、Javaでは整数を10進数、8進数、16進数で書けること、そしてそれぞれ先頭の書き方が違うことを押さえておきましょう。
10進数・2進数・8進数・16進数の対照表
数の表し方の違いを見やすくするために、10進数の0〜20を他の進数と比べてみましょう。
| 10進数 | 2進数 | 8進数 | 16進数 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 2 | 10 | 2 | 2 |
| 3 | 11 | 3 | 3 |
| 4 | 100 | 4 | 4 |
| 5 | 101 | 5 | 5 |
| 6 | 110 | 6 | 6 |
| 7 | 111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 17 | 10001 | 21 | 11 |
| 18 | 10010 | 22 | 12 |
| 19 | 10011 | 23 | 13 |
| 20 | 10100 | 24 | 14 |
この表を見ると、どの進数で桁が繰り上がるのかが分かりやすくなります。
| 進数 | 桁が繰り上がるタイミング |
|---|---|
| 10進数 | 9の次 |
| 2進数 | 1の次 |
| 8進数 | 7の次 |
| 16進数 | Fの次 |
鬼滅風にたとえるなら、各進数はそれぞれ違う型の数え方です。
10の型は9の次で進み、2の型は1の次で進み、8の型は7の次で進み、16の型はFの次で進みます。
図:数値リテラルの読み方
↓クリックすると拡大表示されます。

この図は、12、012、0x12 の違いを比較する図です。
この図から分かることは、同じように数字が並んで見えても、Javaでは先頭の形によって読み方が変わるということです。
12 は10進数、012 は8進数、0x12 は16進数です。
数値リテラルを読むときは、数字の中身だけでなく、先頭に 0 や 0x が付いていないかを確認することが大切です。
よくある見間違いに注意しよう
数値リテラルでは、見た目が似ているために混乱しやすい表記があります。
| 書き方 | 実際の意味 |
|---|---|
| 10 | 10進数の10 |
| 010 | 8進数の10なので、10進数では8 |
| 0x10 | 16進数の10なので、10進数では16 |
| "10" | 文字列 |
| '1' | 文字 |
012 は12ではない
012先頭に 0 が付いているため、8進数として扱われます。
10進数の12ではありません。
0x10 は10ではない
0x10これは16進数の10です。
10進数では16です。
"10" は数値ではない
"10"ダブルクォーテーションで囲まれているため、文字列です。
計算に使う数値としての10ではありません。
'1' は数値ではない
'1'これは1という形の文字です。
数値の1ではありません。
鬼滅風に言えば、見た目だけで力札を判断してはいけません。
札の先頭の印や、囲みの有無まで見て、どの型の札なのかを判断する必要があります。
図:見間違いやすい数値表記
↓クリックすると拡大表示されます。

この図は、10、010、0x10、"10"、'1' の違いを比較する図です。
この図から分かることは、見た目が似ていても、Javaでは書き方によって意味が大きく変わるということです。
010 は8進数、0x10 は16進数、"10" は文字列、'1' は文字です。
数値リテラルを読むときは、先頭の形と囲み方を必ず確認しましょう。
数値リテラルを理解するとJavaの数の見方が広がる
数値リテラルの基本が分かると、Javaコードの中に書かれた数字を、ただの数字としてではなく、意味のある値として読めるようになります。
特に大切なのは、次の3つです。
| 書き方 | Javaでの扱い |
|---|---|
| そのまま書く | 10進数 |
| 先頭に 0 を付ける | 8進数 |
| 先頭に 0x を付ける | 16進数 |
さらに、囲み方にも注意が必要です。
| 書き方 | 意味 |
|---|---|
| 10 | 数値 |
| "10" | 文字列 |
| '1' | 文字 |
数値リテラルは、これから計算、条件分岐、繰り返し、配列などを学ぶときに何度も登場します。
最初は 012 や 0x12 のような表記に少し戸惑うかもしれません。
でも、基本のルールはとても素直です。
そのまま書けば10進数。
先頭に 0 を付ければ8進数。
先頭に 0x を付ければ16進数。
" " で囲めば文字列。
' ' で囲めば文字。
この見分け方を身につけておくと、Javaコードの中の数字がぐっと読みやすくなります。
