Преобразование типов?
С расширяющим преобразованием всё понятно: маленькое кладем в большое и никаких фокусов. А вот с сужающим?
Во-первых, надо явно указать в какой тип идёт преобразование:
int i = 35;
byte b = (byte) i;
При попытке положить большой int в маленький byte происходит следующее:
Если число входит в диапазон byte, оно записывается как есть.
Если не входит, то число уменьшается по модулю* на ширину диапазона byte. Пример:
int i = 600;
byte b = (byte) i;
System.out.println(b);
//Вывод: 88
А при преобразовании вещественных чисел в целочисленные, дробная часть отсекается. Такой тип преобразования называется усечение:
6.12 -> 6
*уменьшение по модулю происходит согласно этому алгоритму (для преобразования в byte):
int num = 512; //Преобразуемое число
num %= 256; //Деление по модулю на диапазон byte
if (num > 127) {
num -= 256;
}
System.out.println(num);
2 notes
·
View notes