Преобразование примитивов



Автоматическое приведение типов возможно, когда выполняются два условия:

— оба типа совместимы;

— размер исходного типа меньше размера типа, который хотим получить.



Числовые типы: целочисленные и с плавающей точкой, совместимы друг с другом. Но не существует автоматического преобразования числовых типов в тип 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 error

int i = b * 2; // ok



Примеры явного приведения:

byte b = (byte) 300;

0000 0001 0010 1100 -> 0010 1100

byte b = (byte) 128;

0000 0000 1000 0000 -> 1000 0000



Прочитать:

— 3 главу у Шилдта. Типы данных, переменные и массивы

— Подробная статья о преобразовании примитивов

https://bit.ly/2NYFxcr