copyUser객체에 user객체를 바로 할당하게 되면 객체가 가리키는 메모리 주소가 같기 때문에 두 객체의 age가 동일하게 변경되는 것을 볼 수 있다. 얕은 복사와 깊은 복사로 해결하자! 📌 얕은 복사(Shallow copy) 빈 객체를 만들어 user객체를 넣거나, 빈 객체에 전개 연산자를 사용하여 값을 넣어준다. 그러나 여기서 user.emails는 배열 데이터고, 참조형 데이터이다. 따로 복사 처리를 한 적이 없고, 복사 처리한 것은 user 객체 데이터 하나이기 때문에 새로운 참조형 데이터인 user.emails 배열 데이터는 같은 메모리 주소를 공유하고 있다. 이처럼 얕은 복사는 표면만 복사하는 것이기 때문에 내부에 참조형 데이터가 있다면 복사되지 않는 것을 볼 수 있다. 이것을 해결하기 위..
깊은 복사
객체 배열 선언과 구현 기본 자료형 배열은 선언과 동시에 배열의 크기만큼의 메모리가 할당되지만 객체 배열의 경우엔 요소가 되는 객체의 주소가 들어갈(4바이트, 8바이트) 메모리만 할당되고(null) 각 요소 객체는 생성하여 저장해야 한다. Book.java public class Book { private String title; private String author; public Book() {} public Book(String title, String author) { this.title = title; this.author = author; } public String getTitle() { return title; } public void setTitle(String title) { this...