1. 먼저 이해해야 할 것은 여기에 s라는 개체가 없다는 것입니다. 코드의 s와 i는 단지 개체에 대한 참조일 뿐이며 C 언어의 포인터와 동일합니다. 공간. 2. for를 반복할 때마다 동일한 이름의 참조를 선언하게 됩니다. 그러면 컴파일러는 이러한 참조를 동일한 이름으로 구별할 수 있으므로 반복 횟수에 관계없이 실제로는 '라는 이름의 참조만 갖게 됩니다. ' 참조. 그리고 이는 첫 번째 for 루프에서 초기화되고 각 후속 루프는 동일한 이름을 가진 이 참조에 값을 할당합니다. 3. 인쇄 결과를 보려면 로컬 변수의 유효한 도메인에 system.out을 입력합니다.
으아악
일단 s는 Object타입이 아닌 기본타입인 int타입이므로 "중복된 s객체를 많이 생성"할 일이 없습니다
여기서 생성되는 것은 int 유형의 변수입니다. 이 변수는 스택에 저장됩니다
반복 횟수를 Integer.MAX_VALUE로 설정하더라도 오류는 보고되지 않습니다. 구체적인 이유는 알 수 없으나, 컴파일러는 매번 실제로 동일한 메모리 영역을 사용하도록 코드를 최적화합니다. 매번 새로운 기억 영역을 열어주는 대신
Integer를 사용해 볼 수 있습니다 ㅎㅎ
1. 먼저 이해해야 할 것은 여기에 s라는 개체가 없다는 것입니다. 코드의 s와 i는 단지 개체에 대한 참조일 뿐이며 C 언어의 포인터와 동일합니다. 공간.
2. for를 반복할 때마다 동일한 이름의 참조를 선언하게 됩니다. 그러면 컴파일러는 이러한 참조를 동일한 이름으로 구별할 수 있으므로 반복 횟수에 관계없이 실제로는 '라는 이름의 참조만 갖게 됩니다. ' 참조. 그리고 이는 첫 번째 for 루프에서 초기화되고 각 후속 루프는 동일한 이름을 가진 이 참조에 값을 할당합니다.
3. 인쇄 결과를 보려면 로컬 변수의 유효한 도메인에 system.out을 입력합니다.
1. 이 코드는 객체를 생성하지 않습니다. Int는 객체가 아닌 기본 데이터 유형입니다.
를 보려면 javap를 사용하세요.2. 이 코드는 컴파일러에 의해 최적화되며 결과는
int s = 9;
형식일 수 있습니다.자바 컴파일러를 사용하고 있기 때문입니다.
int는 어디서 오는 걸까요? 스택의 값이 계속 바뀌는 것뿐입니다