Ozs*_*sie 6 java methods arguments
Java如何处理由|分隔的参数 ?
例如
private void foo(int i) {
System.out.println(i);
}
private void bar() {
foo(1 | 2 | 1);
}
Run Code Online (Sandbox Code Playgroud)
哪个会给出输出
3
Run Code Online (Sandbox Code Playgroud)
我已经看到这在SWT/JFace小部件构造函数中使用.我无法弄清楚的是如何i决定价值.
这|是一个按位或运算符.
foo(1 | 2 | 1);
Run Code Online (Sandbox Code Playgroud)
表示使用参数1按位或2按位或1调用foo.
1 二进制是 012 二进制是 10按位或的01并且10是11它是在十进制3.
请注意,|运算符也可用于布尔值.与||运算符的不同之处在于即使第一个操作数求值,也会计算第二个操作数true.
实际上,所有按位运算符也适用于布尔运算,包括xor ^.但是,这里没有相应的逻辑运算符.(这将是多余的,因为没有办法做一个"懒惰"评估^:)