본문 바로가기

Java

자바는 Call by Value이다.

 Call by Value , Call by Reference 가끔 혼란스럽게 하는 질문이다. 

 

이 질문은 메서드를 호출할 때 인자를 전달하는 방식을 말한다. 기본적으로 자바는 인자를 넘길 때 값 혹은 참조를 복사해서 넘기기 때문에 Call by Reference 가 될 수 없다. 고로 Call by Value이다.

 

 

 

여기서 조금 더 설명을 추가하면 참조를 복사해서 넘기기 때문에

새로운 인스턴스를 할당하게되도 원본은 영향을 받지 않는다.

 

지역변수 builder 는 changeReference 메서드의 스택 영역이 종료되면서 사리질 뿐이다.

복사본이라지만 원본 참조 값을 들고 있기 때문에 해당 인스턴스에 접근해서 필드를 수정하는 것은 가능한 것이다.