Страницы

Поиск по вопросам

четверг, 11 октября 2018 г.

Неявное приведение типов в Java

Учу Java, читаю Шилдта. Уже много раз прочитал, что Java — сильно типизированный язык. Почему следующий код выкидывает ошибку
int i = 10; i = i / 2.5;
А такой код прекрасно работает и присваивает к i значение 4?
int i = 10; i /= 2.5;


Ответ

Так работает оператор присваивания, если переменная типа int, а i / 2.5 типа double, то вы не можете присвоить значение типа double к типу int без явного каста.
То есть проверка типов осуществляется перед присваиванием переменной значения. Во втором случае утверждение является выражением, в котором значение преобразовывается к типу операнда, то есть чтобы можно было осуществить операцию и обратно к типу переменной, где должно хранится значение. То есть
int i = 10; d = i /= 2.5;
тоже будет работать, поскольку нначения int преобразовавыются к double перед присваиванием без потери точности, обратное не верно и вызывает ошибку.

Комментариев нет:

Отправить комментарий