我在Java程序中看到了方法调用中使用的管道字符。
例如:
public class Testing1 {
public int print(int i1, int i2){
return i1 + i2;
}
public static void main(String[] args){
Testing1 t1 = new Testing1();
int t3 = t1.print(4, 3 | 2);
System.out.println(t3);
}
}
当我运行时,我只是得到7
。
有人可以解释管道在方法调用中的作用以及如何正确使用它吗?
答案 0 :(得分:18)
3 | 2
中的管道是bitwise inclusive OR运算符,在您的情况下返回3(二进制为11 | 10 == 11
)。
答案 1 :(得分:7)
这是一个按位OR。
数字的按位表示如下:
|2^2|2^1|2^0| | 4 | 2 | 1 |
|2^2|2^1|2^0| | 4 | 2 | 1 | | - | X | X | => 3
|2^2|2^1|2^0| | 4 | 2 | 1 | | - | X | - | => 2
按位OR将返回3,因为使用OR时至少必须“占用”一位。由于第一位和第二位被占用(3 | 2)将返回3.
最后,加4 + 3 = 7。
答案 2 :(得分:1)
|
运算符对操作数执行按位OR:
3 | 2 ---> 0011 (3 in binary)
OR 0010 (2 in binary)
---------
0011 (3 in binary)
这是模式:
0 OR 0: 0
0 OR 1: 1
1 OR 0: 1
1 OR 1: 1
使用|
:
if(someCondition | anotherCondition)
{
/* this will execute as long as at least one
condition is true */
}
请注意,这类似于||
语句中常用的short-circuit OR(if
):
if(someCondition || anotherCondition)
{
/* this will also execute as long as at least one
condition is true */
}
(除了||
没有强制要求在找到真实表达式后继续检查其他条件。)