할당과 동등성 검사 -d가 함께 있을 때 Java if 문 은 어떻게 작동합니까 OR
??
public static void test() {
boolean test1 = true;
if (test1 = false || test1 == false) {
System.out.println("TRUE");
} else {
System.out.println("FALSE");
}
}
이 인쇄가 FALSE 인 이유는 무엇입니까?
답변
식은 생각대로 구문 분석되지 않습니다. 아니에요
(test1=false) || (test1 == false)
이 경우 결과는 true
이지만
test1 = (false || test1 == false)
false || test1 == false
expression 의 값이 먼저 계산 되고 계산에 들어가도록 설정 false
되었기 때문에 test1
입니다 true
.
이 방식으로 파싱되는 이유는의 우선 순위 가 연산자 ||
보다 낮지 만 ==
할당 연산자의 우선 순위보다 높기 때문 =
입니다.
답변
이것은 기본적으로 우선 순위 문제입니다. 코드가 다음과 같다고 가정합니다.
if ((test1 = false) || (test1 == false))
…하지만 그렇지 않습니다. 실제로 다음과 같습니다.
if (test1 = (false || test1 == false))
… 이는 다음과 같습니다.
if (test1 = (false || false))
(때문에는 test1
것입니다 true
로 시작하는)
… 이는 다음과 같습니다.
if (test1 = false)
값 false
을에 할당하고 test1
표현식의 결과는 false
.
연산자 우선 순위에 대한 유용한 표는 연산자에 대한 Java 자습서를 참조하십시오 .
답변
Expression test1 = false || test1 == false
은 다음 단계에서 평가됩니다.
STEP : 1- test1 = false || test1 == false
// 우선 순위 ==
가 가장 높음
STEP : 2- test1 = false || false
// 연산자 ||
가 더 높은 우선 순위를 가짐
단계 : 3- test1 = false
단계 : 4- false
expression의 boolean 값이 false가되므로 else 문이 실행됩니다.
답변
(test1 = false || test1 == false)
둘 다 거짓이기 때문에 거짓을 반환합니다. (test1 = false || test1 == true)
그들 중 하나가 사실이기 때문에 이것은 사실입니다