Что такое числовое продвижение? Java
Числовое продвижение, также известное как «Неявное преобразование» или «автоматическое преобразование Java», где автоматическое преобразование значения меньшего числового типа в больший числовой тип, так что могут выполняться операции с целыми числами и с плавающей запятой. При числовом продвижении байтовые, char и короткие значения преобразуются в значения int. При необходимости значения int также преобразуются в длинные значения. Значения long и float при необходимости преобразуются в двойные значения.
int i = 25; double dbl1 = 2.5; double dbl2 = dbl1 * i;
В вышеприведенном случае int i повышается вдвое, поэтому расчет может быть выполнен. В некотором смысле, вы можете думать, что это аналогично боксу, но бокс предполагает переход от структуры к объекту, который находится из стека в кучу. Но, используя аналогию, дает представление о том, что интегральное значение превращается в плавающую точку для выполнения расчета.
Расширение примитивного преобразования
19 конкретных преобразований для примитивных типов называются расширяющимися примитивными преобразованиями:
byte to short, int, long, float, or double short to int, long, float, or double char to int, long, float, or double int to long, float, or double long to float or double float to double
Сужение примитивного преобразования
22 конкретных конверсий по примитивным типам называются сужающими примитивными преобразованиями:
short to byte or char char to byte or short int to byte, short, or char long to byte, short, char, or int float to byte, short, char, int, or long double to byte, short, char, int, long, or float
Источник: http://net-informations.com/Java/cJava/numeric.htm