Java Silver試験のために新しい練習問題を解いてみましょう。
問題
次のコードを実行したときの出力として正しい選択肢を選んでください。
public class DataTypeExample {
public static void main(String[] args) {
byte b = 10;
int i = 100;
double d = 20.5;
double result = b + i + d;
System.out.println("Result: " + result);
}
}
選択肢
- A. Result: 130.5
- B. Result: 130
- C. コンパイルエラー
- D. 実行時エラー
答えと解説
回答を見る
答え
A. Result: 130.5
解説
Javaにおける基本データ型の操作に関する問題です。この問題では、データ型が異なる数値を加算しており、最終的な結果がどうなるかを考える必要があります。
- 基本説明: Javaでは、データ型が異なる数値を計算するとき、より大きなデータ型に自動的にキャストされます。具体的には、byteやintのような整数型とdoubleのような浮動小数点型を計算に含めると、結果はdouble型になります。
- 誤答理由: 選択肢B「130」は、計算の結果から浮動小数点部分を無視した場合の出力ですが、Javaは自動的にdoubleへキャストするためこの値にはなりません。コンパイルエラー(C)や実行時エラー(D)も発生しません。
- つまずきポイント: 初心者がよく誤解する点は整数型と浮動小数点型の間での演算の結果を知らないことです。特に、結果のデータ型が浮動小数点になることはトリッキーです。
- 発展知識: この問題では、データ型のキャストが重要な要素となります。Javaでは、特に意識せずともキャストが行われますが、場合によっては自分でキャストを指定する必要がある場合もあります。たとえば、明示的にdoubleをintにキャストしたいなら、`(int)`を使ってキャストする方法も覚えておくと役立ちます。