자바에서는 메서드를 호출할 때 매개변수로 지정한 값을 메서드의 매개변수에 복사해서 넘겨준다. 매개변수의 타입이 기본형(primitive type)일 때는 기본형 값이 복사되겠지만, 참조형(reference type)이면 인스턴스의 주소가 복사된다.
메서드의 매개변수를 기본형으로 선언하면 단순히 저장된 값만 얻지만, 참조형으로 선언하면 값이 저장된 곳의 주소를 알 수 있기 때문에 값을 읽어 오는 것은 물론 값을 변경하는 것도 가능하다.
class ReferenceParamEx2 {
public static void main(String[] args) {
int[] x = {10};
System.out.println("main() : x = " + x[0]);
change(x);
System.out.println("After change(x)");
System.out.println("main() : x = " + x[0]);
}
static void change(int[] x) {
x[0] = 1000;
System.out.println("change() : x = " + x[0]);
}
}
---
main() : x = 10
change() : x = 1000
After change(x)
main() : x = 1000
배열도 객체와 같이 참조변수를 통해 데이터가 저장된 공간에 접근한다. 따라서 매개변수로 값을 읽고 변경하는 것이 가능하다.