할당 및 동등성 검사가있는이 if 문이 거짓으로 평가되는 이유는 무엇입니까?
할당과 동등성 검사 -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");
}
}
이 인쇄가 거짓 인 이유는 무엇입니까?
식은 생각대로 구문 분석되지 않습니다. 아닙니다
(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)
그들 중 하나가 사실이기 때문에 이것은 사실입니다
'Programing' 카테고리의 다른 글
Pandas 데이터 프레임은 각 그룹의 첫 번째 행을 가져옵니다. (0) | 2020.08.13 |
---|---|
RSpec에서 "should_receive"를 더 많이 말하는 방법 (0) | 2020.08.13 |
vim과 함께 git commit -a 사용 (0) | 2020.08.13 |
Oracle SID 및 데이터베이스 이름 확인 (0) | 2020.08.13 |
Mongo 컬렉션을 JSON 형식으로 덤프 (0) | 2020.08.13 |