Strong Root


문제


출력 결과는 무엇일까요?


1
2
3
4
5
6
7
8
9
10
11
12
13
public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public int getAge() {
        return age;
    }
}
cs



1
2
3
4
5
6
7
8
9
10
11
12
public class Test {
    public static void main(String[] args) {
        Person p1 = new Person("CGun"29);
        Person p2 = p1;
        
        p1.age = 30;
        p2.name = "CGun2";
        
        System.out.println(p1.name + ", " + p1.age);
        System.out.println(p2.name + ", " + p2.age);
    }
}
cs
















정답







해설


Person p2 = p1; 실행시에 일어나는 동작을 아는 것이 중요하다.


p1 객체를 복사하여 p2 에 할당하는 것이 아니라,


p1 객체와 같은 곳을 p2 가 가리키게 하는 구문이다.


즉,  reference 값만 복사된다는 뜻이며 결국 p1 과 p2 가 같은 객체를 가리키고 있다는 뜻이다.