Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &;除了按位和_Java_Operators_Bitwise Operators - Fatal编程技术网

Java &;除了按位和

Java &;除了按位和,java,operators,bitwise-operators,Java,Operators,Bitwise Operators,我正在阅读Kathy和Bret写的SCJP 6书,偶然发现了这本书的一些文本,第4章(操作员) 因为你知道 既然java不是C++,java操作符一般不会感到惊讶。 超载。但是,有一些异常运算符会过载: +运算符可用于将两个数字基元添加到一起,或添加到 如果任一操作数是字符串,则执行串联操作 &、|和^运算符都可以以两种不同的方式使用,尽管 在这个版本的考试中,他们的玩弄能力不会被测试 除了按位and、OR和XOR之外,我无法理解java中&、|和^运算符的第二种用法。java中使用&ope

我正在阅读Kathy和Bret写的SCJP 6书,偶然发现了这本书的一些文本,第4章(操作员)

因为你知道 既然java不是C++,java操作符一般不会感到惊讶。 超载。但是,有一些异常运算符会过载:

  • +运算符可用于将两个数字基元添加到一起,或添加到 如果任一操作数是字符串,则执行串联操作
  • &、|和^运算符都可以以两种不同的方式使用,尽管 在这个版本的考试中,他们的玩弄能力不会被测试

除了按位and、OR和XOR之外,我无法理解java中&、|和^运算符的第二种用法。java中使用&operator的两种不同方式是什么?

&
可以作为二进制AND运算符的非短路版本应用于两个
布尔操作数(与短路
&
运算符不同)

|
可以作为二进制或运算符的非短路版本应用于两个
布尔
操作数(与短路
|
运算符不同)

^
(异或)也可以应用于两个
布尔操作数

总之,所有3个运算符都可以用作布尔运算符(应用于
布尔操作数时)或位运算符(应用于整数操作数时)

这些运算符在中进行了说明:

15.22.2。布尔逻辑运算符&、^和|

当&、^或|运算符的两个操作数均为布尔或布尔类型时,则按位运算符表达式的类型为布尔。在所有情况下,操作数都会根据需要进行解装箱转换(§5.1.8)

  • 对于&,如果两个操作数值均为真,则结果值为真;否则,结果为假

  • 对于^,如果操作数值不同,则结果值为真;否则,结果为假

  • 对于|,如果两个操作数值都为false,则结果值为false;否则,结果是正确的


小把戏:
a^b
a是一样的=b带有booleans@MarkJeronimus是的,这就是布尔异或的行为。