Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
Если приведение типов приводит к сужающему преобразованию, то часть информации может быть потеряна. Например, в результате приведения типа long к типу int часть информации потеряется, если значение типа long окажется больше диапазона представления чисел для типа int, поскольку старшие разряды этого числового значения отбрасываются. Когда же значение с плавающей точкой приводится к целочисленному, в результате усечения теряется дробная часть этого числового значения. Так, если присвоить значение 1,23 целочисленной переменной, то в результате в ней останется лишь целая часть исходного числа (1), а дробная его часть (0,23) будет потеряна.
Ниже приведен пример программы, демонстрирующий некоторые виды преобразований, требующие явного приведения типов.
// Демонстрация приведения типов,
class CastDemo {
public static void main(String args[]) {
double x, y;
byte b;
int i;
char ch;
x = 10.0;
У = 3.0;
// В данном случае теряется дробная часть числа.
i = (int) (х / у); // привести тип double к типу int
System.out.println("Integer outcome of x / y: " + i) ;
i = 100;
// А в этом случае данные не теряются. Тип byte может
// содержать значение 100.
Ъ = (byte) i;
System.out.println ("Value of b: " + b) ;
i = 257;
//На этот раз данные теряются. Тип byte не может
// содержать значение 257.
b = (byte) i;
System.out.println("Value of b: " + b);
b = 88; // Представление символа X в коде ASCII.
//И снова требуется явное приведение несовместимых типов.
ch = (char) b;
System.out.println("ch: " + ch);
}
}
Выполнение этой программы дает следующий результат:
Integer outcome of х / у: 3
Value of b: 100
Value of b: 1
ch: X
В данной программе приведение выражения (х / у) к типу int означает потерю дробной части числового значения результата деления. Когда переменной b присваивается значение 100 из переменной i, данные не теряются, поскольку диапазон допустимых значений у типа byte достаточен для представления этого значения. Далее при попытке присвоить переменной b значение 257 снова происходит потеря данных, поскольку значение 257 оказывается за пределами диапазона допустимых значений для типа byte. И наконец, когда переменной char присваивается содержимое переменной типа byte, данные не теряются, но явное приведение типов все же требуется.
Предшествование операторов
В табл. 2.3 приведен порядок предшествования всех операторов в Java: от самого высокого до самого низкого. В эту таблицу включен ряд операторов, рассматриваемых далее в этой книге. Формально разделители [], () и . могут действовать как операторы, и в этом случае они будут иметь наивысший порядок предшествования.
Таблица 2.3. Предшествование операторов в Java
Наивысший порядок
++ (постфиксный)
-- (постфиксный)
++ (префиксный)
-- (префиксный)
~
!
+ (унарный плюс)
- (унарный минус)
(приведение типов)
*
/
%
+
-
>>
<<<
<<
>
>=
<
<=
instanceof
==
!=
&
^
|
&&