> Java > java지도 시간 > Java에서 `j = j ;`가 `j`를 변경하지 않고 그대로 두는 이유는 무엇입니까?

Java에서 `j = j ;`가 `j`를 변경하지 않고 그대로 두는 이유는 무엇입니까?

DDD
풀어 주다: 2024-10-26 19:20:03
원래의
575명이 탐색했습니다.

Why does `j = j  ;` in Java leave `j` unchanged?

Java의 후위 증가 연산자

후위 증가 연산자( )는 변수의 값을 1씩 증가시키는 단항 연산자입니다. , 의미가 다소 혼란스러울 수 있습니다.

다음 코드 세그먼트를 고려하세요.

<code class="java">int j = 0;
for (int i = 0; i < 100; i++) {
  j = j++;
}
System.out.println(j); // prints 0</code>
로그인 후 복사

여기서 루프 이후 j 값은 0으로 유지됩니다. 이 동작은 언뜻 보기에는 직관에 어긋나지만 컴파일러가 수행한 단계를 검토하면 이해할 수 있습니다.

  1. 오른쪽 평가: 표현식 j가 평가됩니다. 이는 j의 값을 0에서 1로 증가시키지만 원래 값(0)을 반환합니다.
  2. 결과 할당: 결과 값(0)이 j에 할당됩니다.

기본적으로 사후 증가 연산자는 변수를 증가시키기 전에 변수의 원래 값을 저장합니다. 이는 다음 코드 블록과 유사합니다.

<code class="java">int temp = j;
j++;
j = temp;</code>
로그인 후 복사

반대로 다음 코드 세그먼트를 고려하세요.

<code class="java">int a = 0, b = 0;
a = b++;
System.out.println(a); // prints 0
System.out.println(b); // prints 1</code>
로그인 후 복사

여기서 a에는 원래 값 b(0)가 할당됩니다. 그런 다음 b가 증가합니다. 이 동작은 후위 증가 연산자를 사용한 할당이 오른쪽을 먼저 평가하고 변수를 증가시킨 다음 원래 값을 할당하는 규칙을 준수합니다.

이전 예에 동일한 논리를 적용하면 다음과 같은 결과를 얻을 수 있습니다. j = j 결과가 0인 이유를 확인하세요.

  1. 우변을 평가하세요: j가 평가되어 j(0)의 원래 값을 반환합니다.
  2. 결과 할당: 결과 값(0)이 j에 할당되어 증가된 값(1)을 덮어씁니다.

따라서 사후 증가 연산자는 예상치 못한 결과를 초래할 수 있습니다. 제대로 이해되지 않으면 결과가 나타납니다. 표현식을 평가한 후 변수를 증가시키고 원래 값을 변수에 할당한다는 점을 기억하는 것이 중요합니다.

위 내용은 Java에서 `j = j ;`가 `j`를 변경하지 않고 그대로 두는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿