我正在阅读Kathy和Bret撰写的SCJP 6书,并从本书第4章(操作员)中找到了一些文字
因为你知道 既然Java不是C ++,那么您对Java运算符通常不会感到惊讶 超载。但是,有一些特殊的运算符会过载:
我无法理解&,|的第二种用法。 Java中的和^运算符,分别不是按位AND,OR和XOR。在Java中使用&运算符的两种不同方式是什么?
答案 0 :(得分:4)
&
可以作为二进制AND运算符的非短路版本(不同于短路boolean
运算符)应用于两个&&
操作数。
|
可以作为二进制OR运算符的非短路版本(不同于短路boolean
运算符)应用于两个||
操作数。
^
(XOR)也可以应用于两个boolean
操作数。
总而言之,所有3个运算符都可以用作布尔运算符(当应用于boolean
操作数时)或按位运算符(当应用于整数操作数时)。
这些操作符在JLS 15.22.2.中进行了描述:
15.22.2。布尔逻辑运算符&,^和|
当&,^或|的两个操作数时运算符的类型为布尔值或布尔值,则按位运算符表达式的类型为布尔值。在所有情况下,操作数都会根据需要进行拆箱转换(第5.1.8节)。
对于&,如果两个操作数值均为true,则结果值为true;否则,结果值为true。否则,结果为假。
对于^,如果操作数值不同,则结果值为true;否则,结果值为true。否则,结果为假。
对于|,如果两个操作数的值均为false,则结果值为false;否则,结果为false。否则,结果为true。