今回は、基本データ型のキャストとプロモーションについて学びます。
問題
次のコードを実行した場合、どのような結果が得られるでしょうか。正しい選択肢を選んでください。
public class Main {
public static void main(String[] args) {
int a = 10;
double b = 20.5;
int sum = a + (int)b;
System.out.println(sum);
}
}
選択肢
- A. 30.5
- B. 30
- C. コンパイルエラー
- D. 実行時エラー
答えと解説
回答を見る
答え
B. 30
解説
解説のポイントを以下に示します。
- 基本データ型のキャスト
- 演算子の優先順位
- 型変換の影響
Javaでは、異なるデータ型を演算するには、型を統一する必要があります。
このため、int
型のa
とdouble
型のb
を足し合わせる前に、明示的なキャストを使用してb
をint
に変換しています。
double
型の20.5をint
にキャストすると、小数点以下が切り捨てられ20になります。
その後、a
と加算されて、sum
には30が代入されます。
演算子の優先順位のため、キャスト演算子は括弧で囲まれることで正確に動作します。
キャストすることによって、精度が失われるという点が重要です。 これは、問題解決の際によく出会う‘型変換の罠’となります。 Javaのマニュアルキャストによって強制的に型変換を行うことができるが、無闇にキャストを使うと元のデータを失うことになります。