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, 기본형을 제외한 모든 것들

 

https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%9E%90%EB%B0%94%EB%8A%94-Call-by-reference-%EA%B0%9C%EB%85%90%EC%9D%B4-%EC%97%86%EB%8B%A4-%E2%9D%93