Приоритет оператора Misunderstanding Java является источником часто задаваемых вопросов и тонких ошибок. Я был заинтригован узнать, что даже в Спецификации языка Java говорится, "Рекомендуется, чтобы код не положился кардинально на эту спецификацию". JLS §15.7 Предпочтение ясного умному, там какие-либо полезные инструкции в этой области?
Вот много ресурсов по теме:
Дополнения или приветствующиеся исправления.
Что касается «реального мира», он, вероятно, справедливо сказать:
, помимо специфического случая * /
против + -
, я бы действительно просто использовал брекеты для явного определения приоритета.
Другой связанный источник ошибок - это то, как накапливаются ошибки округления. Это не проблема порядка приоритета операторов как таковая, а источник удивления, когда вы получаете другой результат после перестановки операндов арифметически эквивалентным способом. Вот версия книги Дэвида Голдберга «Что должен знать каждый компьютерный ученый об арифметике с плавающей точкой» на сайте sun.com .