К. Сьерра в своей книге «SCJP Study Guide» упоминает «Мы знаем, что буквальное целое число всегда является целым числом, но, что более важно, результатом выражения, включающего что-либо размером с целое число или меньше, всегда является целое число». /эм>
Я начал экспериментировать, и меня немного смущают следующие результаты:
byte a = 1; // correct
byte b = 1 + a; // incorrect (needs explicit casting)
byte c = 1 + 1; // correct (I expected it to be incorrect)
Может ли кто-нибудь объяснить мне, почему последний пример не требует приведения? Почему компилятор Java помещает неявное приведение? Это потому, что есть 2 литерала int? Разъяснение очень ценится.