자바 에서 i=i++와 j=i++의 차이 점 소결
i=i++----자바 에서 이 문장의 앞 뒤 순 서 는 이렇게 해 야 합 니 다(tmp=i;i++;tmp==i)
자바 의 컴 파 일 러 는 i++와 i--를 만 났 을 때 다시 변수 연산 에 메모리 공간 을 분배 하여 원시 값 을 저장 합 니 다.할당 연산 이 끝 난 후에 이 메모 리 를 방출 합 니 다.다음은 j=i+의 상황 을 먼저 살 펴 보 겠 습 니 다.
i 의 원시 값 은 나중에 열 린 메모리 에 저장 되 고 마지막 으로 이 값 은 j 에 게 부 여 됩 니 다.그러면 j=i++후 j 는 i 의 값 을 얻 을 수 있 고 i 는 추가 할 것 입 니 다.따라서 메모 리 를 방출 한 후에 원래 j 와 i 를 저장 하 는 곳 에서 값 을 얻 을 수 있 습 니 다.j(이때 의 값 은 초기 i 값 과 같 습 니 다)와 i(i 추가 후의 값)입 니 다.
i=i++의 상황 보기:
i 의 원본 값 은 나중에 열 린 메모리 에 저장 되 어 있 습 니 다.처음에 i 를 추가 하고 마지막 으로 뒤에 있 는 메모리 의 i 를 처음 i 에 부여 합 니 다.
이 두 프로그램의 역 컴 파일 결 과 를 살 펴 보 자.
이것 은 i=i++입 니 다.
1: iconst_0 정형 상수 치 0 창고 진입
2: istore_1 스 택 정상 수 치 를 두 번 째 부분 변수 에 저장 합 니 다.
3: iload_1 두 번 째 정형 국부 변수 창고 진입
4: iinc 1, 1 지정 한 정형 변수 지정 값 증가
5: istore_1 스 택 정상 수 치 를 두 번 째 부분 변수 에 저장 합 니 다.
j = i++;
역 컴 파일 후 이 렇 습 니 다.
7: iconst_0 정형 상수 치 0 창고 진입
8: istore_1 스 택 정상 수 치 를 두 번 째 부분 변수 에 저장 합 니 다.
9: iconst_0 정형 상수 치 0 창고 진입
10: istore_2 스 택 정상 수 치 를 세 번 째 부분 변수 에 저장 합 니 다.
11: iload_2 세 번 째 정형 국부 변수 창고 진입
12: iinc 2, 1 지정 한 정형 변수 지정 값 증가
15: istore_1 스 택 정상 수 치 를 두 번 째 부분 변수 에 저장 합 니 다.
총결산
자바 에 있 는 i=i++와 j=i++의 차이 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 i=i+와 j=i+의 차이 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.