b
이 거짓 일 경우 c
을 검사하지 않는 방식으로 Java의 조건문을 연결하는 방법은 무엇입니까?Java OR 연산자 우선 순위
a
및 c
이 거짓이고 b
이 참이면 c
이 검사됩니까?
if (a || b || c)
나는 왼쪽 피연산자가 true
경우 추가 인수를 평가하지 않습니다 OR
사이 ||
b
이 거짓 일 경우 c
을 검사하지 않는 방식으로 Java의 조건문을 연결하는 방법은 무엇입니까?Java OR 연산자 우선 순위
a
및 c
이 거짓이고 b
이 참이면 c
이 검사됩니까?
if (a || b || c)
나는 왼쪽 피연산자가 true
경우 추가 인수를 평가하지 않습니다 OR
사이 ||
자바 ||
연산자 (논리 OR 연산자) PHP는 차이가 보유하고 유사한 기능을 찾고 있습니다. 원한다면 |
(비트 또는 연산자)을 사용할 수 있습니다. 이름에 따르면, 이것은 약간 해킹입니다.
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.23
따라서, & & 부울 오퍼랜드 &와 동일한 결과를 산출한다. 오른쪽 피연산자 표현식이 항상 아닌 조건부로 평가된다는 점이 다릅니다. 따라서http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.24, || |와 같은 결과를 얻는다. boolean 또는 Boolean 오퍼랜드. 오른쪽 피연산자 표현식이 항상 아닌 조건부로 평가된다는 점이 다릅니다.
추가 : 부작용이있는 코드를 조건부로 호출하기 위해 이러한 의미 체계에 의존하는 잘못된 프로그래밍 스타일로 간주됩니다.
때로는 당신이 프로그램의 성능을 짜내고 싶다면 –
아, 나는 당신이'if (isAlright || doSomething()) ... '이 아니라'if (firstCondition || expensiveSecondCondition()) ...'이 아닙니다. 첫 번째는 부작용이있는 메소드이고 두 번째는 부작용이없는 값 비싼 함수입니다. 나는 두 번째 것이 어쨌든 괜찮다고 말하고 싶다. –
여전히 그늘지고 읽기가 힘들지 만, 때로는 때로는 사양을 충족해야합니다 .-) –
a
이 거짓이고 b
이 참이면 c
은 평가되지 않습니다.
Java에서 논리 연산자의 단락을 다루는 answer을 참조하십시오.
c
은 확인되지 않습니다. 이를 증명하기 위해, 다음과 같은 코드를 사용할 수 있습니다
boolean a() {
System.out.println("a")
return false;
}
boolean b() {
System.out.println("b")
return true;
}
boolean c() {
System.out.println("c")
return true;
}
void test() {
if(a() || b() || c()) {
System.out.println("done")
}
}
가 출력 될 것입니다 :
a
b
done
1) 그게 B은 어떻게하는 방식으로 체인 자바 조건문에 거짓, 체크하지 않는 것보다 c?
c
다음if (a || b)
if (a || (b && c))
2) A와 C가 거짓인지를 찾고있을 수 있습니다 비 물질적이며, B는 사실, c가 검사됩니까? [경우 (a || B 형 || 온도)]
||
은 단락을 평가한다. a
이 false
입니다 그렇다면, b
이 확인되고 b
에 해당하는 경우, c
는 단락 회로 평가에 대한 자세한 내용은 을 검사하지 않습니다 : refer
경우 (A || B 형 ||의 C)
당신의 경우,
a가 참이면 b와 c는 체크되지 않습니다.
a는 거짓이고 b는 true이고 c는 확인되지 않습니다.
a 및 b가 거짓이면 c가 검사됩니다.
연산자의 왼쪽이 먼저 평가됩니다.
아니요, || 단락 회로 평가를 수행합니다. 따라서 a가 거짓이면 b가 검사되고 b가 참이면 c가 검사되지 않습니다. 만약 당신이 확실하지 않다면, 당신은 항상 테스트 할 수 있습니다 : http://ideone.com/mCE8hy –