call by value, call by reference
call by value
메소드 호출시 데이터 값만 넘겨주어, 전달받은 데이터를 변경하더라도, 원본 데이터에 변경이 없는 메소드 호출 방법
예제)))))))))))))))
void a() {
int x = 10;
b(x);
}
void b(int y) {
y = 20;
}
=> x = 10, y = 20
call by reference
메소드 호출시 오브젝트 데이터의 주소값을 넘겨주어, 오브젝트의 맴버변수를 수정하는 메소드 호출 방법.
오브젝트 자체를 수정할 수 없습니다.
예제)))))))))))))))
class DemoObject {
int t;
DemoObject(int i) {
t = i;
}
static void compare(int[] temp, DemoObject s) {
temp[0]++;
temp[1]++;
s.t = 12;
}
}
class CallByRef {
public static void main(String[] arg) {
int[] temp = {4, 1};
DemoObject d = new DemoObject(6);
System.out.println(temp[0]+" "+temp[1]+", "+d.t);
DemoObject.compare(temp, d);
System.out.println(temp[0]+" "+temp[1]+", "+d.t);
}
}
C:\java\ch2>java CallByRef
*********** 결과
4 1, 6
5 2, 12
|