자바/개념

Call by Value, Call by Reference 란?

대전집주인 2024. 4. 4. 11:17
728x90
SMALL

Call by Value

  • 값에 의한 호출
  • 기본 자료형에 적용
  • 변수에 값 자체를 저장
  • 변수를 복사하면 변수의 값 자체를 복사(stack 메모리)
  • 원시타입(primitive type) int, double, char 등 기본 자료형이 속함
  • 파라미터로 값을 던져주고 값이 변경이 되어도 변수의 값을 복사해서 던져 주기 때문에 원본 데이터에는 아무런 지장이 가지 않는다.

파라미터로 변수를 넘기면 변수를 복사하여 넘긴다.

Call by Reference

  • 참조 값에 의한 호출
  • 배열이나 객체를 참조
  • 변수에는 값이 아니라 객체의 주소 값(참조)이 저장
  • 변수를 복사하면 주소가 복사되어 하나의 객체를 참조하게 됨
  • 참조타입(reference type) String, 배열, 객체 등 원시타입을 제외한 타입을 말함
  • 객체를 메서드의 파라미터로 사용할 경우 값을 전달하는게 아닌 참조되는 주소를 던져준다.
  • call by value 처럼 stack의 값(주소)을 복사해서 넘긴다. reference는 주소값을 복사해서 받기 때문에 데이터의 변경이 되면 주소가 가르키는 Heep 메모리의 값이 변경된다.

파라미터로 객체의 값을 넘기면 주소값을 복사하여 넘긴다.

 

주소를 공유하기때문에 값을 변경하면 주소에 해당되는 값이 변경된다..

 

728x90
LIST