Call by value vs Call by reference

rami·2023년 7월 19일
0

Today I Learned

목록 보기
19/34

Call by value (값에 의한 호출)

  • Call by value는 함수 호출 시 인수의 값을 복사하여 전달하는 방식입니다.
  • 함수 내부에서 전달된 인수의 값은 함수의 매개변수로 복사되어 사용되며, 이후에 함수 내에서 인수의 값이 변경되어도 호출한 측에 영향을 주지 않습니다.
  • 원본 변수는 변경되지 않습니다.
public void increment(int num) {
    num++;
}

int value = 10;
increment(value);
System.out.println(value); // 출력 결과: 10

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

  • Call by reference는 함수 호출 시 인수의 메모리 주소를 전달하는 방식입니다.
  • 함수 내부에서 전달된 인수의 메모리 주소를 사용하여 해당 주소에 저장된 값에 접근하고 변경할 수 있으며, 이로 인해 호출한 측의 변수에도 영향을 줄 수 있습니다.
  • 원본 변수가 참조되므로 함수 내에서 인수의 값이 변경되면 호출한 측의 변수도 변경될 수 있습니다.
public void increment(int[] arr) {
    arr[0]++;
}

int[] array = {10};
increment(array);
System.out.println(array[0]); // 출력 결과: 11


Java에서는 객체 타입의 변수를 함수에 전달할 때도 "참조 값(Call by value)"이 전달되며, 함수 내부에서 인수의 값을 변경하면 원본 객체에도 영향을 미치게 됩니다.
따라서 Java에서는 Call by reference가 아닌 Call by value가 기본적인 인자 전달 방식입니다.

profile
앞으로 나아가는 사람

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

아주 잘 작성된 글이었습니다.

답글 달기