얕은복사 깊은복사

LJM·2022년 12월 19일
0

Java

목록 보기
6/33

참조변수복사하면 얕은 복사가 된다는점 주의할것

Book[] library = new Book[3];
Book[] copylibrary = new Book[3];	

library[0] = new Book("밀레니엄시리즈1");
library[1] = new Book("밀레니엄시리즈2");
library[2] = new Book("밀레니엄시리즈3");

System.arraycopy(library, 0, copylibrary, 0, library.length);

//참조변수가 같은 대상을 가리키므로 원본의 값도 변경된다		
copylibrary[0].SetTitle("해리포터");

for(Book book : library)
{
	System.out.println(book);
}

for(Book book : copylibrary)
{
	System.out.println(book);
}

copylibrary 배열의 참조변수들에 new로 각각 할당해줘야 깊은 복사가 된다

Book[] library = new Book[3];
Book[] copylibrary = new Book[3];	

library[0] = new Book("밀레니엄시리즈1");
library[1] = new Book("밀레니엄시리즈2");
library[2] = new Book("밀레니엄시리즈3");

copylibrary[0] = new Book("밀레니엄시리즈1");
copylibrary[1] = new Book("밀레니엄시리즈2");
copylibrary[2] = new Book("밀레니엄시리즈3");

//깊은복사가 되어서 원본에 영향을 주지 않는다
copylibrary[0].SetTitle("해리포터");

for(Book book : library)
{
	System.out.println(book);
}

for(Book book : copylibrary)
{
	System.out.println(book);
}
profile
게임개발자 백엔드개발자

0개의 댓글