可能重复:
为什么我们通常使用||
not|
,有什么区别?
任何人都可以解释Java中OR运算符(||
和)之间的区别和用法吗?|
谢谢
例如:
if(a || b) {
// Do something.
}
和
if(a | b) {
// Do something.
}
可能重复:
为什么我们通常使用||
not|
,有什么区别?
任何人都可以解释Java中OR运算符(||
和)之间的区别和用法吗?|
谢谢
例如:
if(a || b) {
// Do something.
}
和
if(a | b) {
// Do something.
}
这很简单。http://www.roseindia.net/help/java/o/java-operator.shtml说:
OR 运算符是一种条件运算符,用 | 表示。象征。它根据变量的状态返回真或假值,即在两个布尔表达式之间执行使用条件运算符的操作。
OR 运算符 (|) 类似于 Conditional-OR 运算符 (||),如果其中一个或另一个操作数为真,则返回真。
注意:在||
运算符中,如果有多个条件并且如果第一个条件return true
则忽略其他条件,但在|
运算符中所有条件都检查。
有关http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html的更多信息
第一个是逻辑或。运算符的两边都作为boolean
值处理,结果是boolean
. 如果所讨论的变量本身不是boolean
它们本身,那么如果它们是0
or ,它们就会变为假null
。
第二个是按位或运算符。这个通常只适用于整数。我逐位比较这两个值并给出结果数字。例如:
5 | 6 = 7 (decimal)
101 | 110 = 111 (binary)
有关更多详细信息,请查看维基百科:逻辑析取
如果使用运算符 || JVM 不会单独计算右手操作数。
第一个是逻辑或,后者是按位或。但是,如果两个运算符(在您的示例中为 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()。更改为按位或(即 boolean a = getTrue() | getTrue();)将导致两次调用 getTrue()。
使用按位 & 操作和 getFalse() 方法将产生类似的结果。
要考虑的另一个方面是按位运算符优先于逻辑运算符。因此,不建议按位混合它们,否则将在逻辑与之前执行,这可能会导致不良行为。可以使用方括号 () 进行修复,但我认为应该避免这种情况。
作为旁注,我不同意你的问题的否决票,这是一个有效的好问题!(给它+1)
|| 运算符是布尔运算符
它可以用简单的英语解释为...
if ( a is true or b is true)
{
//do soemthing
}
的| 运算符是逻辑运算符
它仅适用于整数类型,如 int、char 等...
它是对两个操作数的按位或运算
例子:
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;
}