자바 에서 i=i++와 j=i++의 차이 점 소결

1779 단어 자바i=i++j=i++
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+의 차이 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기