반응형
자바에서는 인자를 전달할 때 값을 전달한다.
예를들어
public void methodA(SomeClass param) {
param = new SomeClass();
}
public static void main(String[] args) {
SomeClass instance = new SomeClass();
methodA(instance);
}
위와 같은 상황이 있다고 가정하고 결론부터 얘기하면
methodA를 실행한다고해서 main에 있는 instance에 새로운 SomeClass객체가 할당되지 않는다.
methodA에 인자로 전달된 param은 분명 메인에 instance의 주소값을 가지고 있고,
그 주소값을 통해 instance객체에 대한 제어를 할 수 있는 것은 분명한 사실이다.
하지만 param에 new 키워드를 통해 새로운 객체를 할당하는 것은 조금 다르다.
param과 instance는 실제로 같은 주소값을 갖고 있지만
더 정확하게 얘기하면
param은 instance의 실제 객체의 주소값이 복사되어 전달된 복사본을 갖고 있다.
때문에, param과 instance는 특정 주소에 있는 객체에 대해 똑같이 제어할 수 있지만
param에 새로운 객체(주소값)을 할당하는 것은 그저 복사본에 할당하는 것일뿐이고
main에 있는 instance는 전혀 영향을 받지 않는 것이다.
param은 그저 methodA가 끝나면서 사라지는 복사된 주소값일 뿐이다.
반응형
'Back-End > Java' 카테고리의 다른 글
java 라이브러리를 사용하는 소스 컴파일 및 실행 방법 (0) | 2018.09.17 |
---|---|
Java IDE없이 기본 프로젝트 환경 구성하기 (0) | 2018.09.17 |
Java Synthetic class (0) | 2018.09.17 |
Java Dynamic Proxy (0) | 2018.09.17 |
BlockingQueue 정리 (0) | 2018.09.17 |