2013-07-28 4 views
1

Java에서 단락 연산자의 우선 순위를 이해하는 데 어려움을 겪고 있습니다. "& &"조건의 첫 번째 부분이 "거짓"으로 평가되면 단락 회로 동작에 따라 "true || true"표현의 오른쪽 부분이 중요하지 않아야합니다. 나머지 표현식은 평가되지 않았습니다.다음 표현식이 true를 반환하는 이유는 무엇입니까?

그러나 다음 코드를 실행하면 결과가 "true"로 표시됩니다. 누군가 나에게 설명 할 수 있을까요?

public class ExpressionTest{ 
     public static void main(String[] args) { 
     boolean result1 = false && true || true; 
     System.out.println(result1); 
     } 
    } 

답변

4

운영자의 경우 tutorial을 확인하십시오. 이 표는 &&||보다 우선 순위가 높음을 명확하게 보여줍니다. 난 당신이 스스로 평가할 수 있다고 생각

(false && true) || true; 

나머지 :로

false && true || true; 

그래서는 평가된다. 동일한 행에

+0

감사합니다! 이제 표현식이 "사실"로 평가되는 이유를 알았습니다. 그러나, 왜 컴파일러는 평가 전략을 (false && true)로 선택하게 하는가? 참된. 대신, "&&"연산자 바로 앞에 "거짓"을 본 후에 나머지 구문을 무시할 수 있습니까? – sunsin1985

+0

@ sunsin1985. Java는 왼쪽에서 오른쪽으로 표현식을 평가합니다. 그렇습니다. –

+0

감사! 그것은 나에게 그것을 설명한다. – sunsin1985

4

The JAVA turorial 가입일

운영자는 동일한 우선 순위를 갖는다. 같은 우선 순위의 연산자가 같은 표현식에 나타나면 가장 먼저 평가되는 을 규율해야합니다. 할당 연산자를 제외한 모든 2 진 연산자는 왼쪽에서 오른쪽으로 계산됩니다. 할당 사업자

그 때문에 왼쪽 오른쪽으로 평가, 컴파일러는

boolean result1 = (false && true) || true; 

그 때문에 관계없이 A 값의 A || true 반환 true로 구문 분석합니다.

는 바람직한 표현은 다음과 같이 수행으로 활용하려면 다음 답장을

boolean result1 = false && (true || true); 
+0

답장을 보내 주셔서 감사합니다! 자바 튜토리얼은 지금 당장 나를 위해 명확하게 해준다. 왼쪽에서 오른쪽으로의 평가가 핵심이다. – sunsin1985

관련 문제