본문 바로가기
JAVA

[JAVA] 객체 배열의 깊은 복사

by watergrace2u 2022. 3. 23.
반응형
SMALL
class Book {
	private String title;
	private String author;
	public Book() {}
	public Book(String title, String author) {
		this.setTitle(title);
		this.setAuthor(author);
	}
	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getAuthor() {
		return author;
	}

	public void setAuthor(String author) {
		this.author = author;
	}
	public String toString() {
		return title+", " + author;
	}
}

public class ObjectCopy {
	public static void main(String [] args) {
		Book [] bookArr1 = new Book[3];
		Book [] bookArr2 = new Book[3];
		
		bookArr1[0] = new Book("제인에어1","샬롯 브론테");
		bookArr1[1] = new Book("제인에어2","샬롯 브론테");
		bookArr1[2] = new Book("제인에어3","샬롯 브론테");
		
		bookArr2[0] = new Book();
		bookArr2[1] = new Book();
		bookArr2[2] = new Book();
		
		// 객체의 깊은 복사, 서로 다른 주소를 가진다.
		for(int i=0;i<bookArr1.length;i++) {
			bookArr2[i].setTitle(bookArr1[i].getTitle());
			bookArr2[i].setAuthor(bookArr1[i].getAuthor());
		
		}
		// bookArr1 배열을 바꿈. => 깊은 복사를 했기에 bookArr2 영향 X
		bookArr1[0].setTitle("나목");
		bookArr1[0].setAuthor("박완서");
		
		for(int i=0;i<bookArr1.length;i++) {
			System.out.println(bookArr1[i]);
		}
		
		System.out.println("*****************");
		
		for(int i=0;i<bookArr2.length;i++) {
			System.out.println(bookArr2[i]);
		}
	}

}

출력 결과

cf. do it 자바 프로그래밍 강의 (인프런)

반응형
LIST

'JAVA' 카테고리의 다른 글

[JAVA] 접근 제한자  (0) 2022.03.24
[JAVA] ArrayList 클래스  (0) 2022.03.24
[JAVA] 객체 배열의 얕은 복사  (0) 2022.03.23
[JAVA] 자바의 특징 및 장점  (0) 2021.04.10
[Java] Collection(컬렉션)  (0) 2020.09.14

댓글