Java 整数リテラル 練習問題 10問セット(解答・解説付き)
ここでは「整数リテラル(Java)」の理解を深めるための
👉 演習問題10問セット(全問回答+丁寧な解説付き) を用意しました。
初心者がつまずきやすいポイントを中心にしています。
✅ 第1問:基本の10進リテラル
次のコードの出力結果は何になるでしょう?
class Q1 {
public static void main(String[] args) {
System.out.println(123);
}
}
Java答え:
123
解説:123 は普通の10進整数リテラル(=数をそのまま書いたもの)。
特別な接頭辞(0x など)がないので「10進数」として扱われます。
✅ 第2問:2進数リテラル
class Q2 {
public static void main(String[] args) {
System.out.println(0b1010);
}
}
Java答え:
10
解説:0b1010 は「2進数」で書かれた整数リテラルです。1×8 + 0×4 + 1×2 + 0×1 = 10
つまり10進で「10」となります。
✅ 第3問:8進数リテラル
class Q3 {
public static void main(String[] args) {
System.out.println(012);
}
}
Java答え:
10
解説:
先頭が 0 の整数は「8進数」です。012 は「8進の12」→ 1×8 + 2 = 10(10進)
※初心者が「012=12」と思いがちなので注意!
✅ 第4問:16進数リテラル
class Q4 {
public static void main(String[] args) {
System.out.println(0xA);
}
}
Java答え:
10
解説:0xA は16進数の「A」(A=10)。
つまり10進で10になります。0x(または 0X)を付けると16進リテラル。
✅ 第5問:異なる表記は同じ値
class Q5 {
public static void main(String[] args) {
System.out.println(10);
System.out.println(0b1010);
System.out.println(012);
System.out.println(0xA);
}
}
Java答え:
10
10
10
10
解説:
4通りの書き方でも、すべて同じ数「10」を表します。
→ 書き方が違うだけで「値は同じ」。
✅ 第6問:文字列と整数の違い
class Q6 {
public static void main(String[] args) {
System.out.println("10" + 5);
System.out.println(10 + 5);
}
}
Java答え:
105
15
解説:
"10"は文字列。+は「文字列の結合」として動く →"10" + "5"→"105"10は数値。+は「加算」 →10 + 5 = 15
👉"10"(文字列)と10(整数)は全く別物!
✅ 第7問:long 型のリテラル
class Q7 {
public static void main(String[] args) {
long big = 3000000000L;
System.out.println(big);
}
}
Java答え:
3000000000
解説:int の範囲を超える大きな数は L(または l)を付けて long 型として書きます。L がないと 「整数リテラルが大きすぎます」 というコンパイルエラーになります。
✅ 第8問:アンダースコア(桁区切り)
class Q8 {
public static void main(String[] args) {
int num = 1_000_000;
System.out.println(num);
}
}
Java答え:
1000000
解説:_(アンダースコア)は桁区切りに使えます。
実際の値には影響しません。1_000_000 は「1000000」と同じ。
✅ 第9問:先頭ゼロの落とし穴
class Q9 {
public static void main(String[] args) {
int a = 010;
int b = 10;
System.out.println(a + b);
}
}
Java答え:
18
解説:010 は 8進の10 → 8(10進)。10 は 10進の10。
なので、8 + 10 = 18。
👉 普段は先頭ゼロを付けない方が安全!
✅ 第10問:int のオーバーフロー
class Q10 {
public static void main(String[] args) {
int x = 2147483647; // int の最大値
System.out.println(x + 1);
}
}
Java答え:
-2147483648
解説:int の最大値(2,147,483,647)に 1 を足すと、
「オーバーフロー」して最小値(−2,147,483,648)に戻ります。
👉 桁あふれが起きてもエラーにはならず、値が回り込みます。
まとめ(復習ポイント)
| 内容 | 書き方 | 例 | 意味 |
|---|---|---|---|
| 10進数 | そのまま | 123 | 123 |
| 2進数 | 先頭に 0b | 0b1010 | 10 |
| 8進数 | 先頭に 0 | 012 | 10 |
| 16進数 | 先頭に 0x | 0xA | 10 |
| long 型 | 末尾に L | 123L | long 型整数 |
| 桁区切り | _ | 1_000_000 | 1000000 |
| 注意 | "123" は文字列 | "123" + 1 → "1231" | 数値ではない |
学習アドバイス:
- 実際に「手で打って実行」するのが理解の近道です。
- 各リテラルを
System.out.println()に入れて結果を確かめましょう。 intの範囲 (-2,147,483,648~2,147,483,647) も覚えておくと便利です。
