객체의 복사에 대하여 (Shallow copy / Deep copy)
java는 Pass by value 일까? reference 일까? 자바를 처음 배울 즈음, 메소드 인자(parameter)로 사용되는 객체는 value가 아닌 reference를 전달한다는 교과서 구문을 읽고 이게뭐야 하고 가볍게 흘려넘긴 기억이 있다. 말도 안되는 코드지만 다음 코드의 결과를 예측할 수 있었을까?? Person p = new Person("noname"); setAgentName(p); System.out.println(p.getName()); // 1 p = setAgentName(p); System.out.println(p.getName()); // 2 private Person setAgentName(Person p) { p.setName("firepizza"); return p; } 물론 모두 예상했겠지만 1,2 모두 ‘firepizza’가 출력된다. 그럼 이건 어떨까? Person p = new...