CS
Call by Value / Call by Reference
jungmin.park
2023. 12. 7. 13:05
Call by reference란 무엇이고 보통 어떻게 쓰이나요?
Call by reference는 함수의 매개변수에서 주소값을 참조, 즉 객체를 참조하고 있기 때문에 메소드에서 만약 데이터의 값이 수정되었다면 실행이 끝나도 메소드를 호출한 변수에서는 참조를 통해 수정된 데이터를 확인 할 수 있습니다.
메소드가 호출되면 스택에 실제 값이 복사되는 것이 아닌 객체를 참조 할 주소값을 가지고 있습니다. 메소드를 호출한 변수와 메소드의 매개변수는 스택에 있는 같은 주소값을 가지게 되고 이 주소는 힙 메모리 영역에 있는 실제 데이터를 가르키고 있습니다. 따라서 메소드 실행이 끝난 뒤에도 메소드를 호출한 변수에서는 같은 주소를 참조하고 있기 때문에 변경된 데이터를 확인 할 수 있다.
Call by Value(값에 의한 호출)
장점 : 복사하여 처리하기 때문에 안전하다. 원래의 값이 보존 된다.
단점: 복사를 하기 때문에 메모리 사용량이 늘어난다.
Call by reference(참조에 의한 호출)
장점 : 복사하지 않고 직접 참조를 하기에 빠르다.
단점 : 직접 참조를 하기에 원래 값이 영향을 받는다.
자바의 데이터형을 크게 두가지고 나뉘게 된다.
기본형(primitive type) - Boolean Type(boolean), Numeric Type(short, int, long, float, double, char)
참조형(reference type) - Class Type, Interface Type, Array Type, Enum Type, 기본형을 제외한 모든 것들