Про compound assignment операторы в Java

Я же теперь снова Java программист. И вот, не прошло и пары месяцев в этой роли, как я узнал новую мелочь. Оказывается, a = a && x и a &= x это не совсем одно и то же.

&= называется Compound Bitwise & assignment operator, и, как и другие бинарные операторы, он не «ленив», т. е. правая часть всегда вычисляется, вне зависимости от значения левой. Это отличает его от логического &&, который проигнорирует правую часть, если левая false.

Поэтому, если я напишу так

boolean a = false;
a = a && compute();

то compute() не будет вызвана. А если так

boolean a = false;
a &= compute();

то будет.

Leave a Reply

Your email address will not be published. Required fields are marked *