Call by value, Call by Reference

Call by value나 Call by reference는 함수나 메소드에 매개 변수를 전달하는 방식이다. 둘의 차이는 매개 변수에 인자를 어떤 방식으로 넣어 주는지의 차이다.

Call by Value

함수가 인수로 전달받은 값을 복사해 처리하는 방식이다. 이 경우 변수가 가진 값을 복사해 전달하여 값을 변경해도 원본 값은 변경 되지 않는다.

java에 경우 전달받은 파라미터는 원시 값을 전달할 때 call by value를 사용한다.

Call by Reference

call by reference 는 인수로 전달되는 변수의 참조 값을 전달하는 방식이다. 이 경우 함수 내에서 인자로 전달된 변수 값을 변경하면 원본값(호출한 쪽 값)도 변경 된다.

Java에서는 Call by Reference를 사용하지 않는다?

Call by Reference은 C/C++에서 사용 가능하고 Java에서는 개념이 없다. 하지만 자바의 참조형(reference type)의 데이터들을 인자로 넘기고 값을 변경하면 원본값이 변하게 된다. 자바는 Call by Reference를 사용하지 않는다고 하였는데….??

Java에서 원본 값이 변하는 경우

들어가기 앞서 자바의 데이터 형에 대해 간단히 보면 아래와 같다

함수 내에서 인자로 전달된 변수 값을 변경하면 원본값이 변경되는지는 전달되는 인자가 기본형인지, 참조형인지에 따라 달라진다.