public class Main {
public static void main(String[] args) {
byte b = 10;
b += 3;
System.out.println(b);
}
}
選択肢
- あなたの回答
- 正解
正解
A. 13 が表示される
詳細解説
b += 3 は内部的に byte へのキャストを含む複合代入です。そのため b = b + 3 とは異なり、このコードはコンパイルでき、13 が表示されます。
なぜ他の選択肢が違うのか
- b = b + 3 と書くと int への数値昇格があるためコンパイルエラーですが、複合代入は扱いが違います。
- 加算した結果が表示されるため 3 ではありません。
- プリミティブ型の演算なので ClassCastException は関係ありません。
罠ポイント
複合代入は見た目より多くの処理をしています。小さい整数型では、通常の加算と代入を分けて考えると判断しやすくなります。