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, 기본형을 제외한 모든 것들
'CS' 카테고리의 다른 글
JVM의 힙 & 스택 메모리 (0) | 2023.12.14 |
---|---|
[Java] 컴파일되는 과정 (0) | 2023.12.13 |
[JPA] 더티 체킹(dirty checking) 정리 (0) | 2023.12.11 |
JPA의 필요성 (0) | 2023.12.09 |
[Java] Override와 Overload (0) | 2023.12.08 |