Компилятор не пускает одно из (по сути одинаковых) выражений
int i=0;
double d = 0d;
i +=d; //the compiler says it's OK
i = i + d; // ...this is wrong!!! эту строчку компилятор не пускает
Объясните мне в чём проблема? Java 1.8
Ответы (1 шт):
Автор решения: Backflip
→ Ссылка
Приведение типов встроено в оператор +=. Из документации:
A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T) ((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.
То есть,
i += d
превращается в
i = (int)(i + d)