본문 바로가기

개발/Java

[Java]Call by value, Call by reference

자바에 대해 공부를 하다보면 기본 자료형과 참조 자료형에 따른 차이 때문에 혼동하는 상황에 직면할때가 있다.

 

자료형의 차이에 따른 값 호출 방식에 대한 차이때문에 발생하는 일인데 자바에서는 두 가지 방식으로 값을 호출한다.

 

1. Call by value(값에 의한 호출)

  • 함수가 호출될 때 메모리 공간 안에서는 임시의 공간이 생성된다. 그리고 함수가 종료되면 해당공간은 사라진다. 
  • 함수 호출시 전달되는 변수의 값을 복사하여 함수의 인자로 전달한다.
  • 복사된 인자는 함수 안에서 지역적으로 사용하는 변수이다.
  • 기본 자료형 : call by value 로 동작 (int, short, long, float, double, char, boolean)

2. Call by reference(참조에 의한 호출)

  • 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다. (함수 종료시 사라짐)
  • call by reference 참조에 의한 호출방식은 함수 호출시 인자로 전달되는 변수의 레퍼런스를 전달한다. (해당 변수를 가르킨다.) 
  • 함수 안에서 인자의 값이 변경되면, 함수 호출시에 있던 변수들도 값이 바뀐다. 
  • 참조 자료형 : call by reference 로 동작 (Array, Class Instance) 

 

 

'개발 > Java' 카테고리의 다른 글

[Java]Comparator  (0) 2022.03.31
[Java]PriorityQueue  (0) 2022.03.27
[Java]순수 자바 코드로 DIP와 OCP를 준수하는 방법  (0) 2022.03.06
[CS]객체 지향 설계의 5원칙(SOLID)  (0) 2022.03.02
[Java]Optional  (0) 2022.03.01