是否有更好的方法来否定Java中的布尔值而不是简单的if-else?
if (theBoolean) {
theBoolean = false;
} else {
theBoolean = true;
}
Run Code Online (Sandbox Code Playgroud) 我在Java中有很长的比较,我想知道它们中的一个或多个是否真实.比较字符串很长且难以阅读,因此我将其分解以便于阅读,并自动使用快捷操作符|=而不是negativeValue = negativeValue || boolean.
boolean negativeValue = false;
negativeValue |= (defaultStock < 0);
negativeValue |= (defaultWholesale < 0);
negativeValue |= (defaultRetail < 0);
negativeValue |= (defaultDelivery < 0);
Run Code Online (Sandbox Code Playgroud)
negativeValue如果任何默认的<something>值为负,我希望是真的.这有效吗?它会做我期望的吗?我在Sun的网站或stackoverflow上看不到它,但Eclipse似乎没有问题,代码编译和运行.
同样,如果我想执行几个逻辑交叉点,我可以使用&=而不是&&吗?
因此,对于在布尔二元运算符,Java有&,|,^,&&和||.
让我们简要总结一下他们在这里简要介绍的内容:
对于
&,结果值是true两个操作数值是否为true; 否则,结果是false.对于
|,结果值是false两个操作数值是否为false; 否则,结果是true.对于
^,结果值是true操作数值是否不同; 否则,结果是false.该
&&操作是一样&,但是评估其右边的操作数只有在其左侧操作数的值true.该
||操作是一样|的,但评估其右边的操作数只有在其左侧操作数的值false.
现在,所有5间,那些3有复合赋值版本,分别为|=,&=和^=.所以我的问题是显而易见的:为什么不是Java提供&&=和||=呢?我发现我需要那些比我更需要更多的&=和|=.
而且我不认为"因为它太长"是一个很好的答案,因为Java有>>>=.这个遗漏必须有更好的理由.
java conditional-operator short-circuiting assignment-operator compound-assignment
可能重复:
为什么我们通常||不使用|,有什么区别?
标题说明了一切.它已被讨论过其他语言,但我还没有看到它用于Java.
我知道我们不能在java中的if语句中使用赋值运算符,因为我们在其他几种语言中使用它.
那是
int a;
if(a = 1) { }
Run Code Online (Sandbox Code Playgroud)
会给出编译错误.
但是下面的代码工作得很好,怎么样?
boolean b;
if(b = true) { }
Run Code Online (Sandbox Code Playgroud)
编辑:这是一个例外,规则不能在if语句中使用赋值.