Java는 인수를 | ? 예를Java는 인수를 |로 구분하여 어떻게 처리합니까?
출력 내가 SWT/JFace는 위젯 생성자에 사용되는 본 적이3
줄 것
private void foo(int i) {
System.out.println(i);
}
private void bar() {
foo(1 | 2 | 1);
}
에 대한
. 내가 알 수없는 것은 i
의 가치가 어떻게 결정되는지입니다.
Java는 인수를 | ? 예를Java는 인수를 |로 구분하여 어떻게 처리합니까?
출력 내가 SWT/JFace는 위젯 생성자에 사용되는 본 적이3
줄 것
private void foo(int i) {
System.out.println(i);
}
private void bar() {
foo(1 | 2 | 1);
}
에 대한
. 내가 알 수없는 것은 i
의 가치가 어떻게 결정되는지입니다.
|
은 비트 별 또는 연산자입니다.
foo(1 | 2 | 1);
인수와 foo를 호출 수단 1 비트 또는 2 비트 또는 1. 이진
1
는 이진 01
2
가 10
을 OR 01
및 10
진수에서 3 11
이다.
|
연산자는 불린에도 사용할 수 있습니다. 첫 번째 피연산자가 true
으로 평가되는 경우에도 두 번째 피연산자가 계산된다는 것은 ||
연산자와 다릅니다.
실제로 모두 비트 연산자는 xor ^
을 포함하여 부울에서도 작동합니다. 그러나 여기에는 해당하는 논리 연산자가 없습니다. ^
의 "게으른"평가 방법이 없으므로 중복 될 것입니다.
+1 "두 번째 피연산자가 첫 번째 피연산자가 true로 평가되는 경우에도 두 번째 피연산자가 계산됩니다"라는 사실을 알지 못했습니다. – f1sh
bitwise OR operator을 사용하고 있습니다. 처음에는 1 | 1 = 1
이므로 두 번째 1은 중복됩니다. 잉여 1을 제거하면 방정식 1 | 2 = 3
이 남습니다. 주어진 위치에 대한 하나 또는 모두의 값 하나 (1)가있는 경우
01 | 10 = 11
OR 연산자는 각각의 해당 비트 또는 값을 일치하며 2 비트에서 보면 이진는 같다 결과는 1입니다. 두 비트의 값이 모두 일치하면 결과는 0입니다.
| 구분 기호가 아니라 비트 OR 연산자입니다. – Goibniu
저는 실제로 Java에서 비트 연산자를 사용하지 않습니다. 아마도 그 사실을 깨닫지 못했을 것입니다. 지금은 훨씬 더 의미가 있습니다. – Ozsie