Возможные Дубликаты:
Why doesn't Java have compound assignment versions of the conditional-and and conditional-or operators? (&&=, ||=)
Why does a “&&=” Operator not exist?&& = и || = операторы
Сегодня на работе я написал следующее LOC (реальные тождества б и б1 являются конфиденциальными:)
b &&= b1; // meaning b = b && b1;
Я смотрел на него на пару секунд и поняли, что такого оператора не существует. Чтобы быть уверенным, я нажал на компиляцию, и это не удалось. Чтобы быть уверенным, я посоветовался со стандартом.
Существуют ли конкретные причины того, что таких операторов нет? Я могу думать о некоторых:
b &&= b1
иb = b && b1
не могут быть эквивалентными из-за оценки короткого замыкания & &.- & & = некрасиво
- & & = редко требуется
Я не утверждаю, что это было бы очень полезно иметь такие операторы, нет. Я также не утверждаю, что никаких или всех из трех вышеуказанных причин недостаточно, чтобы воздержаться от создания этого оператора. Мой вопрос заключается в следующем: может быть, есть гораздо более серьезная причина, над которой я наблюдаю?
Да, у вас могут быть два «истинных» логических значения (оба больше одного), где их побитовое и значение «false» ... Попробуйте побитовое и 2 и 1, и вы получите 0 (false), где логический и будет выдавать true – LorenVS
'b & = isSomethingWithSideEffects();' будет запускать функцию независимо. но если он был изменен на '&& =' предположительно, это не было бы в случае, если b был ложным, нет? – Dusty
Извините, я не понимаю, почему комментарий Динго был поддержан. Может ли кто-нибудь объяснить, пожалуйста? – John