Java如何处理由|分隔的参数?
Java如何处理由|分隔的参数 比如说Java如何处理由|分隔的参数?,java,methods,arguments,Java,Methods,Arguments,Java如何处理由|分隔的参数 比如说 private void foo(int i) { System.out.println(i); } private void bar() { foo(1 | 2 | 1); } 这将产生输出 3 我已经在SWT/JFace小部件构造函数中看到了这一点。我搞不懂的是I的值是如何决定的。|是一个按位or运算符 foo(1 | 2 | 1); 表示使用参数1位或2位或1调用foo 二进制的1是01 二进制的2是10 01和10的按位
private void foo(int i) {
System.out.println(i);
}
private void bar() {
foo(1 | 2 | 1);
}
这将产生输出
3
我已经在SWT/JFace小部件构造函数中看到了这一点。我搞不懂的是
I
的值是如何决定的。|
是一个按位or运算符
foo(1 | 2 | 1);
表示使用参数1位或2位或1调用foo
- 二进制的
是1
01
- 二进制的
是2
10
01
和10
的按位or为11
,十进制为3
请注意,|
运算符也可用于布尔运算。与|
运算符的区别在于,即使第一个操作数的计算结果为true
,也会计算第二个操作数
实际上,所有按位运算符也适用于布尔运算,包括xor^
。然而,这里没有相应的逻辑运算符。(这将是多余的,因为没有办法对^
:”进行“惰性”评估)它正在使用。对于初学者来说,1 | 1=1
,因此第二个1是多余的。如果我们去掉多余的1,剩下的等式是1 | 2=3
。在2位二进制文件中,它看起来像:
01 | 10=11
or运算符将匹配每个或值的对应位,如果给定位置的任一或两个值中有一个1,则结果为1。如果两个对应的位都有两个值,那么结果是0。您知道|不是分隔符,而是按位OR运算符。我在Java中从未遇到过按位运算符,这可能就是我没有意识到这一点的原因,现在更有意义了。+1表示“即使第一个操作数的计算结果为true,也会计算第二个操作数”,我不知道。