시소당
public class CallbyValue2 {
public static void value(int x){
x+=100;
System.out.println("value() 함수: x="+x);
}
public static void ref(Max max){
max.value +=50;
System.out.println("ref()함수: topmax.value="+max.value);
}
public static void main(String args[]){
int x=50;
Max topmax=new Max(150);
System.out.println("기본형 전달 테스트");
System.out.println("호출전: x="+x);
CallbyValue2.value(x);
System.out.println("호출후: x="+x);
System.out.println();
System.out.println("레퍼런스형 전달 테스트");
System.out.println("호출전: topmax.value="+topmax.value);
CallbyValue2.ref(topmax);
System.out.println("호출후: topmax.value="+topmax.value);
}
}
class Max{
int value;
public Max(int p){
value=p;
}
}
결과값
기본형 전달 테스트
호출전: x=50
value() 함수: x=150
호출후: x=50
레퍼런스형 전달 테스트
호출전: topmax.value=150
ref()함수: topmax.value=200
호출후: topmax.value=200
출처 자바 call by val 와 call by ref의 차이 보기|작성자 라티르타