Java 什么';复合比较运算符的意义是什么?

Java 什么';复合比较运算符的意义是什么?,java,comparison,operators,shortcut,Java,Comparison,Operators,Shortcut,我已经读到,b1 |=b2是与b1=b1 | b2等价的快捷方式。我的问题有两个方面: “=”不是赋值运算符而不是比较运算符吗?如果是,在这种情况下它做了什么 或者,这里是比较运算符吗?在什么情况下需要将变量与自身进行比较(即b1=b1) (我意识到这可能是一个新手问的最新问题,但我只有编写bash脚本的非正式经验,没有编程方面的教育背景。友善一点。) 注意:这是关于这里的问题:Java中有许多运算符。但“复合比较运算符”不是其中之一。您应该阅读一本好书中的Java基础知识,如“头先Java”

我已经读到,
b1 |=b2
是与
b1=b1 | b2
等价的快捷方式。我的问题有两个方面:

“=”不是赋值运算符而不是比较运算符吗?如果是,在这种情况下它做了什么

或者,这里是比较运算符吗?在什么情况下需要将变量与自身进行比较(即
b1=b1

(我意识到这可能是一个新手问的最新问题,但我只有编写bash脚本的非正式经验,没有编程方面的教育背景。友善一点。)


注意:这是关于这里的问题:

Java中有许多运算符。但“复合比较运算符”不是其中之一。您应该阅读一本好书中的Java基础知识,如“头先Java”

为了回答这个问题,
b1 |=b2
是复合赋值

  • =
    b1 | b2
    的结果赋值给LHS操作数,即
    b1
  • 由于现在很清楚这是一个
    赋值
    运算符而不是比较,因此
    b1 |=b1
    的结果将与
    b1=b1 | b1
    相同
  • (注意
    |
    这里是两个数字之间的逻辑
    ,而不是
    |
    ,这是一个条件运算符。
    |
    |
    有不同的含义)


    HTH.

    |=
    不是复合比较运算符。没有复合比较运算符,只有复合赋值运算符。如果b1或b2为真,b1将为真,这是一个布尔值吗?@反斜杠您认为如何使用短路形式的
    |=
    ?我的意思是,假设
    | |=
    确实存在,你会如何有意义地使用它?@反斜杠错了。管道操作符
    |
    用于按位或逻辑OR。双管运算符仅用于逻辑,当运算符为布尔运算符时,
    a | b
    a | b
    之间的区别在于第一个运算符不是短路,第二个运算符是短路。感谢您的澄清。你的意思是写
    b1=b1 | b2
    而不是
    b1=b1 | b1
    ?我是说
    b1=b1 | b1
    ,回答你的第二个问题,你对双方使用相同的变量表示怀疑。