자바에서 메서드 호출 시 매개변수를 전달하는 방식은
Call by Value와 Call by Reference 두 가지가 있습니다.
두 방식의 차이점과 사용 방법에 대해 자세히 알아보도록 하겠습니다.
Call by Value
Call by Value는 메서드 호출 시 인자로 전달되는 값의 복사본을 전달하는 방식입니다.
따라서 메서드 내에서 매개변수의 값을 변경하더라도, 호출한 쪽에는 영향을 미치지 않습니다.
이 방식은 자바에서 기본 자료형(primitive type)을 매개변수로 전달할 때 사용됩니다.
아래의 코드에서 changeValue 메서드는 int형 변수 num을 매개변수로 받아 num의 값을 10으로 변경합니다.
하지만 main 메서드에서 num의 값은 변경되지 않습니다.
public class CallByValueExample {
public static void main(String[] args) {
int num = 5;
changeValue(num);
System.out.println(num); // 출력 결과: 5
}
public static void changeValue(int num) {
num = 10;
}
}
Call by Reference
Call by Reference는 메서드 호출 시 인자로 전달되는 값의 주소를 전달하는 방식입니다.
따라서 메서드 내에서 매개변수의 값을 변경하면, 호출한 쪽에서도 변경된 값을 확인할 수 있습니다.
이 방식은 자바에서 객체(Object)를 매개변수로 전달할 때 사용됩니다.
아래의 코드에서 changeValue 메서드는 배열 arr을 매개변수로 받아 arr[0]의 값을 10으로 변경합니다.
이 때, main 메서드에서도 arr[0]의 값이 변경됩니다.
public class CallByReferenceExample {
public static void main(String[] args) {
int[] arr = {5};
changeValue(arr);
System.out.println(arr[0]); // 출력 결과: 10
}
public static void changeValue(int[] arr) {
arr[0] = 10;
}
}
정리
Call by Value:
메서드 호출 시 인자로 전달되는 값의 복사본을 전달하는 방식으로,
자바에서 기본 자료형을 매개변수로 전달할 때 사용됩니다.
Call by Reference:
메서드 호출 시 인자로 전달되는 값의 주소를 전달하는 방식으로,
자바에서 객체(Object)를 매개변수로 전달할 때 사용됩니다.
따라서 개발자는 메서드 호출 시 매개변수를 전달하는 방식을 구분하여 적절한 방식을 선택해야 합니다.
'Language > JAVA' 카테고리의 다른 글
Java는 Call By Value일까요, Call By Reference 일까요? (0) | 2023.04.07 |
---|---|
[JAVA] 애너테이션(annotation) (0) | 2022.12.05 |
[JAVA]열거형 (enums) (0) | 2022.12.01 |
[JAVA] 지네릭스(Generics) (0) | 2022.11.28 |
클래스와 객체지향프로그래밍 임시 저장 (0) | 2022.11.22 |