Автоматическое преобразование типов данных в Java, в том числе при использовании Integer, работает по принципу расширения (widening) или повышения (promotion). 14
Автоматическое преобразование возможно, когда точности представления чисел переменной-приёмника достаточно для хранения исходного значения. 1 Например, при занесении значения переменной типа byte или short в переменную типа int. 1 В этом случае размера типа int всегда достаточно для хранения чисел из диапазона, допустимого для типа byte, поэтому явное приведение типа не требуется. 1
В выражениях автоматическое преобразование типов происходит, когда точность, требуемая для хранения промежуточных результатов, зачастую должна быть выше, чем требуется для представления окончательного результата. 1 Например, если результат промежуточного выражения (а* b) может выйти за диапазон допустимых для типа byte значений, то Java автоматически повышает тип каждой части выражения до типа int. 1
При использовании Integer автоматическое преобразование типов работает благодаря функции auto-unboxing. 3 Когда объект Integer присваивается переменной типа int, Java автоматически извлекает значение примитива из объекта, что делает преобразование бесшовным. 3