Я отлаживаю код, который содержит expr1 & expr2
, где expr1
имеет побочный эффект, который влияет на expr2
результат оценки. Я подозреваю, что expr2
оценивается до expr1
, поскольку JLS гарантирует оценку слева направо для &&
, но не обязательно для &
. Я также подозреваю, что изменение порядка оценки может быть результатом оптимизации, выполненной HotSpot (у нас работает Java 6u20). Вы знаете, может ли HotSpot провести такую оптимизацию? А еще лучше, предоставить любые указатели на документацию, которая либо поддерживает, либо устраняет подозрение. Заранее спасибо.
РЕДАКТИРОВАТЬ: Спасибо за те, кто предлагает переписать код, чтобы он был и корректным, и читабельным - вы правы, но я уже сделал, так что это не то, что я ищу. К сожалению, это трудно проверить изменения, поэтому я задаю вопрос здесь.