присваивания в Java
Есть у нас два маленьких кусочка кода:
Код 1:
Код 2:
Если сейчас для Вас не является секретом, какой из этих двух примеров удачно скомпилируется, а какой - нет, то можете спокойно пропускать эту заметку. Если же - нет, то жмем "Читать далее".
Итак, рабочий код содержится в Код 1. Но, лучше давайте начнем разбираться с Код 2. Где же тут ошибка? А вот она:
Дело в том, что "Целочисленные выражения всегда содержат результат вычисления в переменной размером с int и никогда меньше."
Значит, мы пытаемся в переменную типа short запихнуть значение типа int, а это грозит потерей точности, о чем нас и уведомляет компилятор:
Но почему же в Код 1 у нас нет никаких предупреждений о ошибках?
Дело в том, что: "Составные присваивания (+=), выполняют автоматическое приведение типов." что это значит?
Это значит, что запись:
На самом деле равна вот такой записи:
Все.
P.S. Цитаты взяти из мега статьи max`а, за которую ему отдельное спасибо.







Зато так сработает:
short s = 12;
s = (short) (s + 10);
s = (short) s + 10;// не прокатит? как в C
Отправить комментарий