В программировании регулярно встречаются задачи, когда один тип данных нужно преобразовать в другой. Простейший пример – работа с формами на сайтах.
Данные формы всегда приходят в текстовом виде, даже если значение число. Вот как его можно преобразовать:
// станет int
var number = Integer.parseInt("345");
System.out.println(number); // => 345
Если нужно конвертировать из примитивного типа в примитивный, то все проще. Достаточно перед значением в скобках указать желаемый тип. В результате значение справа преобразуется в значение другого типа, указанного слева:
var result = (int) 5.1;
System.out.println(result); // => 5
Преобразование типов можно использовать внутри составных выражений:
// Дополнительные скобки помогают визуально отделить части выражения друг от друга
var result = 10 + ((int) 5.1);
System.out.println(result); // => 15
Неявное преобразование типов
Некоторые преобразования в Java могут выполняться автоматически без явного указания программистом. Такое преобразование называется неявным преобразованием типов. Если в одном выражении участвуют разные типы данных, Java может сама без явного указания преобразовать один тип данных в другой для выполнения операции. Для этого нужно, чтобы типы были совместимы между собой и чтобы размерность преобразуемого была равна или меньше результирующего типа.
Например, числовые типы данных совместимы друг с другом, но автоматическое преобразование из числового типа в boolean не сможет выполниться
var a = true;
// Error: incompatible types: int cannot be converted to boolean
a = 1;
Также без проблем и без потери точности автоматически выполнится преобразование из типа short в тип int. В этом случае значение типа short, которое занимает в памяти 2 байта, расширяется до типа int, которое занимает 4 байта.
short a = 5;
// преобразование от short к int
int sum = a + 1;
А вот обратное преобразование не будет выполнено автоматически
int a = 5;
// Error: incompatible types: possible lossy conversion from int to short
short sum = a + 2;
Еще одним примером неявного преобразования типов является преобразование чисел в строку при конкатенации числа со строкой. В этом случае Java автоматически преобразует число в строковое представление и объединяет его с другой строкой
var a = 10;
var result = "Число: " + a; // Число: 10
Неявные преобразования типов удобны и позволяют сократить код, делая его более читаемым и компактным. Однако необходимо помнить о возможных потерях точности при преобразовании типов данных