Oracle Certified Associate Java SE 8 Programmer 1 시험을 준비하면서 공식 학습 가이드에서 삼항 표현에 관한 다음 단락을 발견했습니다.
삼항 표현식 평가
Java 7부터는 삼항 연산자의 오른쪽 표현식 중 하나만 런타임에 평가됩니다. 단락 연산자와 유사한 방식으로 삼항 연산자의 두 오른쪽 표현식 중 하나가 부작용을 수행하면 런타임에 적용되지 않을 수 있습니다. 다음 예제로이 원리를 설명해 봅시다 : [...]
다음 예제를 통해 두 식 중 하나만 평가된다고 말합니다.
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
여기에서는 예상대로 y
증가하지만 z
그렇지 않습니다.
내가 걸려 넘어지는 것은 "As of Java 7 ..."이라는 단락의 시작 부분 (노란색으로 표시됨)입니다. Java 1.6으로 동일한 코드를 테스트했는데 동작의 차이를 찾을 수 없습니다. Java 1.6이 단락에 제공된 정보만으로 두 표현식을 모두 평가할 것으로 예상했습니다. "As of Java 7, ..."로 무엇을 말하고 싶은지 아는 사람이 있습니까?
편집 : 혼동을 피하기 위해 : 'As of Java 7'을 작성했기 때문에 Java 6에서 Java 7로 전환 할 때 삼항 연산자와 관련하여 변경된 것이 있습니까?