可能重复:
Why do we usually use||
not|
, what is the difference?
任何人都可以在java中解释OR运算符(||
和|
)之间的区别和用法。感谢
例如:
if(a || b) {
// Do something.
}
和
if(a | b) {
// Do something.
}
答案 0 :(得分:3)
这很简单。 http://www.roseindia.net/help/java/o/java-operator.shtml说:
OR运算符是一种表示的条件运算符 通过|符号。它根据状态返回true或false值 变量,即使用条件运算符的运算 在两个布尔表达式之间执行。
OR运算符(|)类似于Conditional-OR运算符(||)和 如果其操作数中的一个或另一个为真,则返回true。
注意:在||
运算符中,如果有多个条件且第一个条件为return true
,则忽略其他条件,但在|
运算符中所有条件检查。
有关http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
的更多信息答案 1 :(得分:3)
第一个是逻辑或。运算符的两边都作为boolean
值处理,结果为boolean
。如果相关变量本身不是boolean
,则如果它们是0
或null
则会变为假。
第二个是按位或运算符。这个通常只适用于整数。我逐位比较这两个值并给出结果数。例如:
5 | 6 = 7 (decimal)
101 | 110 = 111 (binary)
有关详细信息,请查看Wikipedia: Logical disjunction
答案 2 :(得分:2)
如果使用运算符|| JVM不会单独评估右手操作数。
答案 3 :(得分:1)
|| operator是一个布尔运算符
它可以用简单的英语解释为......
if ( a is true or b is true)
{
//do soemthing
}
| operator是一个逻辑运算符
它只适用于整数类型,如int,char等......
它是两个操作数上的按位OR运算
示例:
bool a = true;
bool b = false;
bool c = a | b;
//c will be true
if(a | b )
{
}
is same as
c = a | b;
if ( c == true)
{
do something;
}
答案 4 :(得分:1)
第一个是逻辑 - 或者后者是按位 - 或者。但是,如果两个运算符(在您的示例中为a和b)是布尔值,则按位 - 或被视为逻辑 - 或没有短路。这有时很方便。
例如,考虑:
boolean getTrue() {
System.out.println("getTrue() called");
return true;
}
public static void main(String[] args) {
boolean a = getTrue() || getTrue();
System.out.println("Result: " + a);
}
上面只会打印“getTrue()called”,因为逻辑 - 或(||)可以立即确定表达式的结果,而不会再次调用getTrue()。更改为按位 - 或(即布尔a = getTrue()| getTrue();)将导致两次调用getTrue()。
使用按位&和类似的结果将产生类似的结果。操作和getFalse()方法。
要考虑的另一个方面是逐位运算符在逻辑运算符之前获得优先级。因此,不建议将它们混合为按位或将在逻辑之前执行,这会导致不必要的行为。它可以使用方括号()修复,但我认为应该避免这种情况。
作为旁注,我不同意你的问题的投票,这是一个有效而好的问题! (给它一个+1)