カテゴリ: JavaSilver試験対策 更新日: 2026/06/07

Javaの数値リテラル表記を完全解説!初心者でも理解できるアンダースコアの使い方

012
Javaの数値リテラル表記とアンダースコア

先生と生徒の会話形式で理解しよう

生徒

「Javaで数値のリテラル表記にアンダースコアを使うと便利だと聞きました。でも、どうやって使うのか分からなくて…。」

先生

「アンダースコアは数値を見やすくするためのものですが、使い方にルールがあります。それを説明していきますね!」

生徒

「ルールがあるんですね!どんな場面で使えるのか教えてください。」

先生

「では、具体的な例を交えながら説明しましょう。」

1. 数値リテラルとアンダースコアの基本

1. 数値リテラルとアンダースコアの基本
1. 数値リテラルとアンダースコアの基本

Javaでは、数値リテラルの中にアンダースコア(_)を挟むことで、桁区切りを見やすくすることができます。例えば、次のような使い方が可能です。


public class NumberLiteralExample {
    public static void main(String[] args) {
        int largeNumber = 1_000_000; // 見やすい桁区切り
        float pi = 3.14_15F;         // 小数部にも使用可能
        System.out.println("Large Number: " + largeNumber);
        System.out.println("Pi: " + pi);
    }
}

出力:


Large Number: 1000000
Pi: 3.1415

アンダースコアは見た目を整えるためのもので、実際の計算には影響しません。

2. アンダースコアのルール

2. アンダースコアのルール
2. アンダースコアのルール

アンダースコアを使用する際の主なルールは以下の通りです。

  • 数値リテラルの先頭または末尾に使用できない。
  • 記号(.LF0b0x)の直前や直後に使用できない。
  • 適切な位置に挟むことで視認性を高める目的で使用する。

以下は、正しい使い方と間違った使い方の例です。


// 正しい例
int validNumber = 1_000_000;
float validFloat = 3.14_15F;

// 間違った例
int invalidStart = _100; // 先頭に使用
int invalidEnd = 100_;   // 末尾に使用
float invalidDot = 3_.1415F; // ドットの前後

3. コンパイルエラーの例

3. コンパイルエラーの例
3. コンパイルエラーの例

次の例では、アンダースコアの使い方を誤っているためコンパイルエラーになります。


public class InvalidExamples {
    public static void main(String[] args) {
        // 以下はコンパイルエラーになります
        // int invalidStart = _123456;
        // int invalidEnd = 123456_;
        // long invalidSuffix = 123_456_L;
        // float invalidDot = 3_.1415F;
        // int invalidHex = 0x_123;
    }
}

このようなエラーを避けるために、正しい使い方を意識しましょう。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. アンダースコアの活用例

4. アンダースコアの活用例
4. アンダースコアの活用例

正しいアンダースコアの使い方を覚えることで、コードの可読性が向上します。以下はその活用例です。


public class CorrectUsage {
    public static void main(String[] args) {
        int binary = 0b1010_1010;   // 2進数リテラル
        int hex = 0xFF_EC_DE_5E;   // 16進数リテラル
        int largeDecimal = 1_234_567; // 10進数リテラル
        System.out.println("Binary: " + binary);
        System.out.println("Hexadecimal: " + hex);
        System.out.println("Decimal: " + largeDecimal);
    }
}

出力:


Binary: 170
Hexadecimal: 4293713502
Decimal: 1234567

これらの形式を活用することで、特に大きな数値や特殊な進数リテラルの読みやすさを改善できます。

5. 2進数や16進数での便利な区切り方

5. 2進数や16進数での便利な区切り方
5. 2進数や16進数での便利な区切り方

アンダースコアは、10進数だけでなく2進数(0b)や16進数(0x)のリテラル表記でも非常に役立ちます。特にビット演算を扱う際や、色の指定(RGB)を行う際に、4桁や2桁ごとに区切ることでミスを防ぐことができます。

以下のサンプルプログラムで、区切りを入れた場合の見やすさを比較してみましょう。


public class SpecialLiteralExample {
    public static void main(String[] args) {
        // 4ビットごとに区切ると、ビットの状態が分かりやすい
        int flags = 0b1101_0010_1011_0101;

        // 2桁(1バイト)ごとに区切ると、色コード(RGBA)などが読みやすい
        int color = 0xFF_57_33_AA;

        System.out.println("Flags (int): " + flags);
        System.out.println("Color (int): " + color);
    }
}

Flags (int): 53941
Color (int): -11062358

このように、データの構造に合わせてアンダースコアを入れる位置を工夫するのが、2026年現在のプロの開発現場でも推奨されているテクニックです。

6. なぜアンダースコアを使うのか?(可読性のメリット)

6. なぜアンダースコアを使うのか?(可読性のメリット)
6. なぜアンダースコアを使うのか?(可読性のメリット)

「わざわざ記号を入れなくても動くのでは?」と思うかもしれません。しかし、大規模なシステム開発において、数値の読み間違いは致命的なバグの原因になります。アンダースコアを使う主なメリットは以下の2点です。

  • 桁数の把握が瞬時にできる: 100000000 よりも 100_000_000 の方が、一目で1億だと判断できます。
  • 入力ミスを防止: ゼロの個数を数え間違えるリスクを大幅に減らすことができます。

特に金額や定数を定義する際には、チームメンバーが誰が見ても意図が伝わるように、3桁(カンマ区切り風)や4桁(万単位風)で区切る習慣をつけましょう。

7. アンダースコア使用時の注意点まとめ

7. アンダースコア使用時の注意点まとめ
7. アンダースコア使用時の注意点まとめ

最後に、初心者が間違いやすい「禁止されている位置」をもう一度整理しておきましょう。Javaのコンパイラは、数値と数値の間に挟まっているアンダースコア以外は受け付けてくれません。

NGなパターン 間違ったコード例 理由
接頭辞の直後 0x_FF 0x の直後は不可
小数点の前後 3._14 . の直前・直後は不可
接尾辞の直前 100_L LF の直前は不可

もしプログラムが赤く光って(コンパイルエラーになって)しまったら、これらのルールに触れていないかチェックしてみてください。正しい使い方をマスターすれば、あなたの書くコードはより美しく、信頼性の高いものになります。

まとめ

まとめ
まとめ

Javaの数値リテラルにおけるアンダースコアは、可読性向上のための便利な機能です。ただし、アンダースコアの使用にはルールがあるため、それを理解して正しく活用する必要があります。 特にリテラルの先頭や末尾、記号の前後に配置できない点は注意が必要です。また、数値リテラルの形式(2進数、10進数、16進数など)ごとに適切な位置に挿入することで、より見やすいコードを書くことができます。

アンダースコアを使えば、大きな数値を扱うときでも簡単に桁数を把握でき、誤りを減らすことができます。これを活用し、保守性の高いコードを書くことを心がけましょう。


public class SummaryExample {
    public static void main(String[] args) {
        int million = 1_000_000;
        long largeHex = 0xFF_AE_12_34L;
        float precisePi = 3.14_159F;
        System.out.println("Million: " + million);
        System.out.println("Large Hexadecimal: " + largeHex);
        System.out.println("Precise Pi: " + precisePi);
    }
}

出力例:


Million: 1000000
Large Hexadecimal: 4292070964
Precise Pi: 3.14159
先生と生徒の振り返り会話

生徒

「アンダースコアって便利ですね!使い方が分かればもっと読みやすいコードが書けそうです。」

先生

「その通りです!特に大きな数値を扱う場面では大活躍します。ただし、使い方のルールを守らないとコンパイルエラーになってしまうので注意してくださいね。」

生徒

「ルールがあることで、逆にミスが減らせそうです。勉強になりました!」

先生

「これからも、実際のプログラムで試して使い慣れていきましょう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaの数値リテラルとは何ですか?アンダースコアの使い方も教えてください。

Javaの数値リテラルとは、プログラム内で直接指定する数値のことです。アンダースコアを使うことで桁区切りが視覚的に分かりやすくなり、コードの可読性が向上します。

Javaでアンダースコアを数値に使うメリットは何ですか?

アンダースコアを使うことで、特に大きな数値を扱う際に桁数が把握しやすくなり、ミスの防止や保守性の向上に役立ちます。

Javaでアンダースコアを使えるのはどのような数値リテラルですか?

アンダースコアは10進数、2進数(0b)、16進数(0x)などのリテラルに使うことができます。また、小数にも使用可能ですが、ルールを守る必要があります。
JavaSilver試験対策の一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク