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進数:
練習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)
- *演算子(+, -, , /, %)の挙動
