java - for循环造对象,造了很多重复的s对象,为什么不报错?
大家讲道理
大家讲道理 2017-04-18 09:51:15
0
7
553

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(7)
迷茫

으아악

刘奇
  1. 일단 s는 Object타입이 아닌 기본타입인 int타입이므로 "중복된 s객체를 많이 생성"할 일이 없습니다

  2. 여기서 생성되는 것은 int 유형의 변수입니다. 이 변수는 스택에 저장됩니다

  3. 반복 횟수를 Integer.MAX_VALUE로 설정하더라도 오류는 보고되지 않습니다. 구체적인 이유는 알 수 없으나, 컴파일러는 매번 실제로 동일한 메모리 영역을 사용하도록 코드를 최적화합니다. 매번 새로운 기억 영역을 열어주는 대신

小葫芦

Integer를 사용해 볼 수 있습니다 ㅎㅎ

阿神

1. 먼저 이해해야 할 것은 여기에 s라는 개체가 없다는 것입니다. 코드의 s와 i는 단지 개체에 대한 참조일 뿐이며 C 언어의 포인터와 동일합니다. 공간.
2. for를 반복할 때마다 동일한 이름의 참조를 선언하게 됩니다. 그러면 컴파일러는 이러한 참조를 동일한 이름으로 구별할 수 있으므로 반복 횟수에 관계없이 실제로는 '라는 이름의 참조만 갖게 됩니다. ' 참조. 그리고 이는 첫 번째 for 루프에서 초기화되고 각 후속 루프는 동일한 이름을 가진 이 참조에 값을 할당합니다.
3. 인쇄 결과를 보려면 로컬 변수의 유효한 도메인에 system.out을 입력합니다.

Peter_Zhu

1. 이 코드는 객체를 생성하지 않습니다. Int는 객체가 아닌 기본 데이터 유형입니다.
2. 이 코드는 컴파일러에 의해 최적화되며 결과는 int s = 9; 형식일 수 있습니다.

를 보려면 javap를 사용하세요.
刘奇

자바 컴파일러를 사용하고 있기 때문입니다.

刘奇

int는 어디서 오는 걸까요? 스택의 값이 계속 바뀌는 것뿐입니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿