배열은 기본적으로 c++과 사용법이 비슷하지만
Book[] library = new Book[5];
처럼 new 생성자를 무조건 사용해야한다는 차이점이 있다. 위의 예시처럼 사용하면 Book들의 주소를 생성한 것이고
library[0] = {bookName, bookId} 처럼 사용해야 실제 값을 넣은 것이다.
기본적으로 arrayCopy 메소드를 사용해서 배열을 복사한다. 하지만 이 때 값 자체를 복사하는 것이 아니라 주소만 복사하기 때문에 이전 배열 요소가 변경되면 복사된 것도 같이 바뀌게 된다.
libraryCopy = System.arrayCopy(library,0,libraryopy,0,5 )
이 문제를 해결하기 위해서는 깊은 복사를 해야 하는데 이는 값을 복사해서 다르게 사용할 수 있게된다.
for(int i=0;i<library.length; i++) {
libraryCopy[i].setName(library[i].getName());
libraryCopy[i].setId(library[i].getId());
}
// 생성.
java.util.ArrayList<String> list = new java.util.ArrayList<String>();
// 추가.
list.add("qwe");
list.add("asd");
list.add("zxc");
// 출력.
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}