Java의 후위 증분 연산자
Joshua Bloch의 "Java Puzzlers"에 있는 다음 코드 조각은 언뜻 보면 혼란스러워 보입니다.
<code class="java">public class Test22 { public static void main(String[] args) { int j = 0; for (int i = 0; i < 100; i++) { j = j++; } System.out.println(j); // prints 0 int a = 0, b = 0; a = b++; System.out.println(a); // prints 0 System.out.println(b); // prints 1 } }</code>
포스트 증가에 대한 혼란
혼란스러운 부분은 j = j의 동작으로, 결과적으로 j는 0으로 유지됩니다. 저자에 따르면 이 표현식은 다음과 유사합니다. :
<code class="java">temp = j; j = j + 1; j = temp;</code>
그러나 a = b 의 경우 b는 실제로 1이 되어 일관성이 없어 보입니다.
차이 이해
이러한 혼란을 해결하려면 후위 증가 연산자( )에 대한 규칙을 이해해야 합니다.
lhs = rhs++;
동일함:
temp = rhs; rhs = rhs + 1; lhs = temp;
규칙 적용
이 규칙을 a = b에 적용하면 다음과 같습니다.
temp = b; b = b + 1; a = temp;
따라서 a는 b의 원래 값(0)을 얻고 b는 1로 증가됩니다.
j = j의 경우
마찬가지로 j = j에 규칙을 적용하면 다음과 같은 결과가 나옵니다.
temp = j; j = j + 1; j = temp;
temp가 원본과 동일하므로 j의 값(0)이 있으면 j는 1로 증가하지만 즉시 원래 값(0)으로 덮어쓰기되어 j는 0으로 유지됩니다.
결론
후위 증가 연산자의 동작을 이해하는 열쇠는 lhs = rhs가 2단계 프로세스라는 규칙을 기억하는 것입니다. 먼저 rhs의 현재 값이 temp에 할당된 다음 rhs가 증가되고 마지막으로 temp가 할당됩니다. LHS로.
위 내용은 왜 `j = j ` 결과가 `j`가 Java에서 0으로 유지됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!