Java逻辑XOR(“^”)与逻辑NOT(“!”)

时间:2016-09-30 01:11:24

标签: java javafx bit-manipulation

通过查看JavaFX https://github.com/HanSolo/submitbutton/blob/master/src/main/java/eu/hansolo/submitbutton/Demo.java中的一些自定义库。

  

我带来了这段代码:

                 if (toggle) {  //where toogle is a boolean
                    if (progress > 0.75) {
                            progress = 0;
                            button.setFailed();
                            timer.stop();
                            toggle ^= true;
                        }
                    } else {
                        if (progress > 1) {
                            progress = 0;
                            timer.stop();
                            toggle ^= true;
                        }
                    }
                 }
  

问题

为什么编码员写了toggle ^= true;我理解它的作用following the table below

A   B   A ^ B
0   0     0
0   1     1
1   0     1
1   1     0

改为使用toggle=!toggle;

这是一种模式,它与任何性能改善有关,还是个人偏好?我很好奇,但是第一次看到这个... ...

1 个答案:

答案 0 :(得分:1)

FWIW,它不是布尔值之间的“按位操作”。这是一个“逻辑运算”。布尔运算符和整数之间的运算符之间的运算符是不同的,但是它们是相关的。