백앤드/JAVA

[JAVA] 자바는 Call by Value방식이다

영최 2024. 10. 18. 10:47
728x90

1. [Call by Value와 Call by Reference의 차이]

  • Call by Value: 함수 호출 시 값을 복사해서 전달. 값을 복사해야하므로 생성한 변수마다 스택에 메모리 할당.
  • Call by Reference: 함수 호출 시 참조하고있는 주소를 전달. 원본데이터에 접근해서 수정 가능함.

2. [자바는 Call by Value방식이다]

  • Primitive Type(원시 자료형) (int,short,long,float,double,char,boolean) 에서는 값 자체를 복사하고 함수에 전달된다.
  • Reference Type(참조 타입) (Array, Class Instance) 에서는 주소 을 복사하고 함수에 전달. 값을 복사하고 전달하는 방식이기 때문에 Call by Value 방식이지만 주소 값을 통해 원본 객체에 접근할 수 있으므로, 함수에서 객체의 속성을 변경하면 원본 객체도 변경됨.

예시) Reference Type에서 원본 객체 속성 변경 예시

public class Example {
    public static void modifyArray(int[] arr) {
        arr[0] = 10;  // 전달된 배열의 첫 번째 값을 수정
    }

    public static void main(String[] args) {
        int[] numbers = {1, 2, 3};
        modifyArray(numbers);  // 배열의 참조 값이 전달됨
        System.out.println(numbers[0]);  // 결과: 10
    }
}
728x90