Java 自動型変換(暗黙の型変換) 練習問題 10問
プログラミング初心者が理解を深められる練習問題セット(10問)を紹介します。
各問題に 解答・詳しい解説 をつけています。
すべて実際に動かせるJavaコードです。
問題1:int と double の演算
次のコードを実行すると、result にはどんな値が代入されるでしょうか?
int a = 5;
double b = 2.0;
double result = a + b;
System.out.println(result);
Java✅ 解答
7.0
💡 解説
a は int 型、b は double 型。
異なる型で演算する場合、小さい型(int)が大きい型(double)に変換されてから計算されます。
結果は double なので小数も保持され、出力は 7.0 です。
問題2:short と short の足し算
次のコードはコンパイルできますか?
short s1 = 10;
short s2 = 20;
short s3 = s1 + s2;
Java✅ 解答
コンパイルエラーになります。
💡 解説
short + short の演算結果は 自動的に int 型 になります。
そのため、short 変数に代入しようとすると「型が大きすぎる」とエラーになります。
修正版:
short s3 = (short)(s1 + s2);
Javaまたは
int s3 = s1 + s2;
Java問題3:整数の割り算
次の出力結果はどうなるでしょうか?
int a = 5;
int b = 2;
System.out.println(a / b);
Java✅ 解答
2
💡 解説
どちらも int なので、整数どうしの割り算になります。
小数点以下は切り捨てられ、2.5 ではなく 2 になります。
もし 2.5 を得たいなら:
System.out.println((double)a / b); // 2.5
Java問題4:long と int の演算
次のコードは正しく動作しますか?
long l = 10000000000L;
int i = 5;
long result = l + i;
Java✅ 解答
エラーなく実行できます。
💡 解説
int と long の演算では、int が long に変換されます。
結果の型は long なので result に代入可能です。
問題5:float と double の演算
次の出力結果を予想してください。
float f = 1.5f;
double d = 2.0;
System.out.println(f + d);
Java✅ 解答
3.5
💡 解説
float は double に変換されてから演算されるので、1.5f → 1.5 (double) になり、2.0 と足して 3.5 になります。
結果の型は double。
問題6:単項マイナス(−)の型変換
次のコードはコンパイルできるでしょうか?
short s = 10;
short t = -s;
Java✅ 解答
コンパイルエラーになります。
💡 解説
s は short 型ですが、-s の演算結果は int 型です。
そのため short には代入できずエラーになります。
修正版:
short t = (short)(-s);
Javaまたは
int t = -s;
Java問題7:文字と数値の演算
次の結果はどうなりますか?
char c = 'A'; // 'A' は Unicode で 65
int n = 2;
System.out.println(c + n);
Java✅ 解答
67
💡 解説
char は数値として扱える型です。'A' は数値 65 に変換され、65 + 2 = 67。
結果は int 型になります。
問題8:byte 型の演算とキャスト
次のコードを実行した結果は?
byte x = 10;
byte y = 20;
byte z = (byte)(x + y);
System.out.println(z);
Java✅ 解答
30
💡 解説
x + y は int になるため、キャスト (byte) で戻しています。
今回は 30 なので問題なし。
もし byte の最大値 127 を超えるとオーバーフローします。
問題9:自動変換の順序確認
次のうち、優先順位が正しいものはどれ?
a. int > long > float > double
b. double > float > long > int
c. float > double > long > int
✅ 解答
b. double > float > long > int
💡 解説
Javaの自動型変換では、より“広い”型(情報量の多い型)に自動的に昇格します。
つまり、int → long → float → double の順に変換されます。
問題10:int と float の混合
次の出力結果は?
int i = 7;
float f = 2.5f;
System.out.println(i + f);
Java✅ 解答
9.5
💡 解説
i は float に変換されてから足し算されます。
結果は float 型で 9.5 になります。
まとめ:自動型変換のポイント整理
| 型の優先順位 | double > float > long > int |
|---|---|
| byte, short は演算前に | int に変換される |
| 結果を小さい型に入れるときは | キャストが必要 |
| 小数を出したいときは | double / float を使う |
| 符号反転(−)も実は int に昇格 | short, byte で注意! |
