JAVA
JAVA / 함수 호출방식 Call by value와 Call by reference
LWM
2020. 5. 31. 14:45
반응형
*함수 호출방식
- Call by value : 값에 의한 호출
Call by value는 메소드 호출 시에 사용되는 인자의 메모리에 저장되어 있는 값을 복사하여 보낸다.
예제를 살펴보자
-예시-
Class CallByValue{
public static void swap(int x, int y) {
int temp = x;
x = y;
y = temp;
}
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("swap() 호출 전 : a = " + a + ", b = " + b);
swap(a, b);
System.out.println("swap() 호출 후 : a = " + a + ", b = " + b);
}
}
-결과-
swap() 호출 전 : a = 10, b = 20
swap() 호출 후 : a = 10, b = 20
- Call by reference : 참조에 의한 호출
메소드 호출 시 사용되는 인자 값의 메모리에 저장되어있는 주소를 복사하여 보낸다.
-예시-
Class CallByReference{
int value;
CallByReference(int value) {
this.value = value;
}
public static void swap(CallByReference x, CallByReference y) {
int temp = x.value;
x.value = y.value;
y.value = temp;
}
public static void main(String[] args) {
CallByReference a = new CallByReference(10);
CallByReference b = new CallByReference(20);
System.out.println("swap() 호출 전 : a = " + a.value + ", b = " + b.value);
swap(a, b);
System.out.println("swap() 호출 전 : a = " + a.value + ", b = " + b.value);
}
}
-결과-
swap() 호출 전 : a = 10, b = 20
swap() 호출 후 : a = 20, b = 10
반응형