class Data {
int x;
}
class Ex6_6 {
public static void main(String[] args) {
Data d = new Data();
d.x = 10;
System.out.println("main() : x = " + d.x);
change(d.x);
System.out.println("----After change(d.x)----");
System.out.println("main() : x = " + d.x);
}
static void change(int x) {
x = 1000;
System.out.println("change() : x = " + x);
}
}
강의를 듣고 위에 코드를 분석하여 아래 그림으로 나타내보았다.
Data d = new Data(); //1번 객체생성
d.x = 10; //x의 값을 초기화
System.out.println("main() : x " + d.x);
- d.x의 값을 출력한다.
change(d.x);
- 실행되면 아래 메소드로 내려간다.
static void change(int x) {
x = 1000;
System.out.println("change() : x " + x);
}
- 현재 d.x = 10 이므로 (int x)가 d.x를 매개변수로 받았고,
- 이 값이 중괄호 안 영역에서 x에 대입된다.
- 메소드가 끝난 후 실행 위치로 다시 와서, 아래 코드를 실행한다.
System.out.println("----After change(d.x)----");
System.out.println("main() : x " + d.x);
main 메소드까지 끝나면 프로그램이 종료된다.
main() : x = 10
change() : x = 1000
----After change(d.x)----
main() : x = 10