Call by Value , Call by Reference 가끔 혼란스럽게 하는 질문이다.
이 질문은 메서드를 호출할 때 인자를 전달하는 방식을 말한다. 기본적으로 자바는 인자를 넘길 때 값 혹은 참조를 복사해서 넘기기 때문에 Call by Reference 가 될 수 없다. 고로 Call by Value이다.
여기서 조금 더 설명을 추가하면 참조를 복사해서 넘기기 때문에
새로운 인스턴스를 할당하게되도 원본은 영향을 받지 않는다.
지역변수 builder 는 changeReference 메서드의 스택 영역이 종료되면서 사리질 뿐이다.
복사본이라지만 원본 참조 값을 들고 있기 때문에 해당 인스턴스에 접근해서 필드를 수정하는 것은 가능한 것이다.
'Java' 카테고리의 다른 글
모던 자바 인 액션 - Executor와 쓰레드 풀 (0) | 2023.07.12 |
---|---|
Java - Executor (0) | 2023.07.12 |
모던 자바 인 액션 (1) Stream API의 특징 (0) | 2023.07.08 |
record class는 정말로 불변할까 (0) | 2023.05.25 |
제네릭이란 무엇일까? 타입의 안정성과 다형성 (0) | 2023.03.29 |