Java | 演算時の自動型変換(暗黙の型変換/型昇格)

Java Java
スポンサーリンク

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

💡 解説

aint 型、bdouble 型。
異なる型で演算する場合、小さい型(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

✅ 解答

エラーなく実行できます。

💡 解説

intlong の演算では、intlong に変換されます。
結果の型は long なので result に代入可能です。


問題5:float と double の演算

次の出力結果を予想してください。

float f = 1.5f;
double d = 2.0;
System.out.println(f + d);
Java

✅ 解答

3.5

💡 解説

floatdouble に変換されてから演算されるので、
1.5f1.5 (double) になり、2.0 と足して 3.5 になります。
結果の型は double


問題6:単項マイナス(−)の型変換

次のコードはコンパイルできるでしょうか?

short s = 10;
short t = -s;
Java

✅ 解答

コンパイルエラーになります。

💡 解説

sshort 型ですが、-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 + yint になるため、キャスト (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

💡 解説

ifloat に変換されてから足し算されます。
結果は float 型で 9.5 になります。


まとめ:自動型変換のポイント整理

型の優先順位double > float > long > int
byte, short は演算前にint に変換される
結果を小さい型に入れるときはキャストが必要
小数を出したいときはdouble / float を使う
符号反転(−)も実は int に昇格short, byte で注意!

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました