(x = x + y) или (x += y) — отличия в приведении типов
1,00
р.
р.
Столкнулся с таким вот свойством сложения. У нас есть две переменные: int x = 1 long y = 2 y нужно прибавить к x. Если мы воспользуемся простым сложением, то IDE откажется компилировать: x = x + y //Incopatible types Если же мы пользуемся следующей конструкцией: x += y то код обрабатывается корректно. Ошибка понятна — мы пытаемся запихнуть long в int, IDE видит потенциальную ошибку и не даёт скомпилировать. Но почему проходит во втором случае?
Ответ var1 op= var2 равносильно var1 = (T)((var1) op (var2)), где op - оператор. Пример: int x = 2 double y = 4.6 Данная строка x += y равносильна нижней: x = (int)(x + y) Документация: 15.26.2. Compound Assignment Operators