На самом деле, я не согласен с остальными ответами.JLS §15.7, на который ссылаются люди, обсуждает оценку операндов.То есть в выражении
x = foo() - 1 + bar()
, в каком порядке будут вызываться методы.
Соответствующий раздел - §15.7.3, в котором указано
Реализация не может использовать преимущества алгебраических тождеств, таких как ассоциативный закон, для переписывания выражений в более удобный вычислительный порядок , если только не может быть доказано, что выражение замены эквивалентнопо значению и наблюдаемым побочным эффектам [...]
Поскольку выражение x = x - 1 + q
во всех отношениях эквивалентно x = x + q - 1
, соответствующая реализация может переписать выражение(если по какой-то причине следует решить, что более эффективно).