Я готовлю сертификацию Java 7 и задаю следующий вопрос.
Byte b = 10 компилируется нормально. Похоже, компилятор сужает int 10 до байт 10, а затем боксирует его. Почему Byte b = new Byte(10) не будет компилироваться? Почему компилятор не может сузить int 10 до байта 10, как это было в первом случае?
Также как получается, что Long l = new Long(10) компилируется нормально, но Long l = 10 терпит неудачу?
Я не понимаю, как это работает. Может ли кто-нибудь дать четкое объяснение?