심심풀이 문제4 - Object Assign (객체 대입)
뿌리튼튼 CS/Java2016. 10. 4. 20:33
문제
출력 결과는 무엇일까요?
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 가 같은 객체를 가리키고 있다는 뜻이다.
'뿌리튼튼 CS > Java' 카테고리의 다른 글
심심풀이 문제6 - 상속과 오버라이딩 (Heritage & Overriding) (0) | 2016.10.04 |
---|---|
심심풀이 문제5 - 예외 처리 흐름 (Exception handling flow) (0) | 2016.10.04 |
심심풀이 문제3 - Call by Value vs Call by Reference (0) | 2016.10.04 |
심심풀이 문제2 - String (0) | 2016.08.02 |
생성자를 쓰는 이유. 생성자의 필요성 (Why use constructors) (0) | 2016.08.02 |