Java | 整数リテラルの基本

Java Java
スポンサーリンク

Javaの整数リテラルをやさしく理解する

はじめてのうちは「数字の書き方でエラーが出る」「”123”と123の違いがわからない」でつまずきがち。ここでは、整数の書き方(整数リテラル)をかみ砕いて、手を動かしながらわかるように説明します。


基本の考え方

  • 整数リテラル: プログラムの中に「そのままの数字」を直接書いたもの。
    例: 7, 100, 0
  • 文字列リテラル: 文字の並び。数字に見えても「文字」として扱われます。
    例: "7", "100"

直感のポイント: 見た目が数字でも、ダブルクォーテーションで囲むと「文字列」。計算に使いたいならクォーテーションを外す。


いろいろな進数の書き方

Javaでは、同じ数を別の進数で書けます。慣れないうちは「10進数」からでOK。後で違いに触れていきましょう。

  • 10進数(ふだんの数字):123
    • 覚えるポイント: 先頭にゼロは基本つけない(例: 0123は8進数になってしまうので注意)
  • 2進数(0と1):0b1111
    • 書き方: 先頭に0bまたは0B
  • 8進数(0〜7):077
    • 書き方: 先頭に0(昔の仕様で使われます。紛らわしいので初心者は避けてもOK)
  • 16進数(0〜9, A〜F):0x1A
    • 書き方: 先頭に0xまたは0X

重要な実感: どの進数で書いても、画面に出すとき(System.out.println)は10進数で表示されます。


動かして理解する例

例1: 基本の出力

public class Example1 {
    public static void main(String[] args) {
        System.out.println(123);    // 10進数
        System.out.println(0b1111); // 2進数(15)
        System.out.println(077);    // 8進数(63)
        System.out.println(0x1A);   // 16進数(26)
    }
}
Java
  • 期待する表示:
    123
    15
    63
    26
  • 気づき: 書き方は違っても、出てくる値は10進数。

例2: 文字列と整数の違い

public class Example2 {
    public static void main(String[] args) {
        System.out.println(100 + 23);   // 計算できる -> 123
        System.out.println("100" + 23); // 連結になる -> "10023"
    }
}
Java
  • ポイント:
    • 整数同士: 足し算などの計算が行われる
    • 文字列 + 整数: 「文字のつなぎ合わせ」になる(計算ではない)

例3: 変数に代入して使う

public class Example3 {
    public static void main(String[] args) {
        int a = 10;        // 10進数
        int b = 0x3F;      // 16進数(63)
        int c = 0b1010;    // 2進数(10)

        int sum = a + b + c;
        System.out.println(sum);    // 10 + 63 + 10 = 83
    }
}
Java
  • ポイント:
    • int: 一般的な整数の型
    • 代入: どの進数で書いても、変数に入れば「ただの整数」として使える

よくあるつまずきと回避法

  • 先頭ゼロの落とし穴:
    • 例: int x = 012; は8進数の「10」です。10進数の「12」ではありません。
    • 回避: 10進数で書くときは先頭にゼロをつけない。
  • 文字列と整数の混同:
    • 症状: "2" + 3 が「5」にならず「23」になる。
    • 回避: 計算したいなら数値にする。Integer.parseInt("2") + 3 は「5」。
    int result = Integer.parseInt("2") + 3; System.out.println(result); // 5
  • 大きすぎる数値:
    • 症状: int の範囲(約 −21億〜+21億)を超えるとエラー。
    • 回避: 大きい値は long を使う。long n = 3000000000L;(末尾に L が必要)

手を動かす練習問題

練習1: 進数の理解

  • 課題: 次の整数リテラルが10進数でいくつになるか、printlnで確認してみよう。
    • 値: 0b101101, 077, 0x2F
  • ヒント:
    • 2進数: 0b101101 = 45
    • 8進数: 077 = 63
    • 16進数: 0x2F = 47

練習2: 文字列を数値にして計算

public class Practice2 {
    public static void main(String[] args) {
        String price = "150";
        String tax = "10";

        // ここを数値に変換して、合計(160)を表示してみよう
        int total = Integer.parseInt(price) + Integer.parseInt(tax);
        System.out.println(total);
    }
}
Java
  • 狙い: "150" は文字列。Integer.parseInt で整数に変換して足し算ができる。

練習3: 先頭ゼロの違いを確認

public class Practice3 {
    public static void main(String[] args) {
        int a = 12;   // 10進数の12
        int b = 012;  // 8進数の12(= 10進数の10)

        System.out.println(a); // 12
        System.out.println(b); // 10
    }
}
Java
  • 学び: 見た目が似ていても意味が違う。ゼロの有無は超重要。

まとめと次の一歩

  • 要点:
    • 整数リテラルは「そのまま書いた整数」
    • 進数の書き方: 10進(そのまま)、2進(0b)、8進(先頭0)、16進(0x
    • 出力は10進数表示
    • “数字”は文字列。計算したいなら数値に変換。
  • 次に学ぶと理解が深まること:
    • 型の範囲(int, long)
    • 整数と小数(double)
    • *演算子(+, -, , /, %)の挙動
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました