【发布时间】:2013-03-02 22:00:25
【问题描述】:
最近我看到一个使用这个的代码:
boolean val = something();
val |= somethingElse();
有趣的部分是在布尔原始类型上创建的 |=(类似二进制)运算符。
令我惊讶的是,布尔值存在 |=,就好像它是整数类型一样,并在 Java 规范中搜索该运算符,但找不到。
如果左值已经为真,是否会评估右操作数。
有人可以指出我的 Java 规范吗?
【问题讨论】:
-
只是 val = val |别的东西(); // somethingElse() 期望返回布尔值。这是一个标准的 OR
-
@SudhanshuUmalkar OP 知道这一点,他要求在文档中提供规范。
-
答案在这里,伙计们:stackoverflow.com/q/2486472/544983
-
我以为只有||对于布尔表达式,所以我希望像 ||= 这样的运算符。制作二进制有意义吗?在布尔值上?
-
@Sudhanshu 这不是标准的 OR,它是按位 OR 运算符(与布尔运算符相反)。它也是一个积极的运算符,而不是短路运算符(例如布尔运算符)。
标签: java operators specifications boolean-expression compound-assignment