MENU

【Java Silver】変数の宣言と初期化、キャストの理解

今回は、基本データ型のキャストとプロモーションについて学びます。

問題

次のコードを実行した場合、どのような結果が得られるでしょうか。正しい選択肢を選んでください。

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型のadouble型のbを足し合わせる前に、明示的なキャストを使用してbintに変換しています。

double型の20.5をintにキャストすると、小数点以下が切り捨てられ20になります。 その後、aと加算されて、sumには30が代入されます。

演算子の優先順位のため、キャスト演算子は括弧で囲まれることで正確に動作します。

キャストすることによって、精度が失われるという点が重要です。 これは、問題解決の際によく出会う‘型変換の罠’となります。 Javaのマニュアルキャストによって強制的に型変換を行うことができるが、無闇にキャストを使うと元のデータを失うことになります。

目次