Автоматическое приведение типов возможно, когда выполняются два условия:
— оба типа совместимы;
— размер исходного типа меньше размера типа, который хотим получить.
Числовые типы: целочисленные и с плавающей точкой, совместимы друг с другом. Но не существует автоматического преобразования числовых типов в тип
char и boolean. Так как целочисленные константы по дефолту
int, то Джава выполняет автоматическое преобразование типов при их сохранении в переменные типа byte, short, long или char. Пример:byte b = 127;Во время вычислений происходит повышение типа.
— Тип всех значений
byte, short, char повышается до int.— Если один операнд имеет тип
long, тип всего выражения повышается до long. Если один операнд имеет тип float, тип всего выражения повышается до float. Если один операнд имеет тип double, тип всего выражения повышается до double. Сокращенно:int -> long -> float -> doubleПример:
byte b = 1;b = b * 2; // compile errorint i = b * 2; // okПримеры явного приведения:
byte b = (byte) 300;0000 0001 0010 1100 -> 0010 1100byte b = (byte) 128;0000 0000 1000 0000 -> 1000 0000Прочитать:
— 3 главу у Шилдта. Типы данных, переменные и массивы
— Подробная статья о преобразовании примитивов
https://bit.ly/2NYFxcr