K.Sierra は著書「SCJP スタディ ガイド」で、 「リテラル整数は常に int であることを知っていますが、さらに重要なことは、int サイズ以下のものを含む式の結果は常に int になることです」と述べています。
私は実験を始めましたが、以下の結果に少し混乱しています:
byte a = 1; // correct
byte b = 1 + a; // incorrect (needs explicit casting)
byte c = 1 + 1; // correct (I expected it to be incorrect)
最後の例でキャストが必要ない理由を誰かに説明してもらえますか? Javaコンパイラが暗黙のキャストを配置するのはなぜですか? int リテラルが 2 つあるからでしょうか。明確にしていただければ幸いです。