Do It Java Day14
배열과 ArrayList 2
1. 객체 배열 만들기
- 참조 자료형을 선언하는 객체 배열
- 배열만 생성한 경우 요소는 null로 초기화 된다
- 각 요소를 new를 활용하여 생성해야 한다
public class BookArray {
public static void main(String[] args) {
Book[] library = new Book[5];
System.out.println(library[0]); //null출력(초기값은 null이다)
//각 요소를 new를 활용하여 생성해야 한다
library[0] = new Book("태백산맥", "조정래");
library[0].showBookInfo();
}
}
2. 배열 복사하기
System.arraycopy(src, srcPos, dest, destPos, length);
- src: 복사할 배열 이름
- srcPos: 복사 시작할 위치
- dest: 붙여 넣을 대상 배열 이름
- destPos: 붙여 넣기를 시작할 첫 번째 위치
- length: 복사할 요소 개수
3. 객체 배열 복사하기
- 얕은 복사: 대상 배열의 주소만 복사해서 대상 배열이 변경되면 복사된 배열의 값도 변경된다
public class ObjectCopy {
public static void main(String[] args) {
Book[] bookArray1 = new Book[3];
Book[] bookArray2 = new Book[3];
bookArray1[0] = new Book("책1", "저자1");
bookArray1[1] = new Book("책2", "저자2");
bookArray1[2] = new Book("책3", "저자3");
//객체배열 얕은 복사
System.arraycopy(bookArray1, 0, bookArray2, 0, 3);
for(int i = 0; i < bookArray2.length; i++) {
bookArray2[i].showBookInfo();
}
//원본 배열 값 변경
bookArray1[0].setBookName("변경된 책 이름");
bookArray1[0].setAuthor("변경된 저자 이름");
//복사한 배열의 값도 바뀐다
for(int i = 0; i < bookArray2.length; i++) {
bookArray2[i].showBookInfo();
}
}
}
- 깊은 복사
public class ObjectCopy {
public static void main(String[] args) {
Book[] bookArray1 = new Book[3];
Book[] bookArray2 = new Book[3];
bookArray1[0] = new Book("책1", "저자1");
bookArray1[1] = new Book("책2", "저자2");
bookArray1[2] = new Book("책3", "저자3");
//배열 인스턴스 따로 생성
bookArray2[0] = new Book();
bookArray2[1] = new Book();
bookArray2[2] = new Book();
//배열에 값을 각각 넣어서 복사
for(int i = 0; i < bookArray1.length; i++) {
bookArray2[i].setAuthor(bookArray1[i].getAuthor());
bookArray2[i].setBookName(bookArray1[i].getBookName());
}
for(int i = 0; i < bookArray2.length; i++) {
bookArray2[i].showBookInfo();
}
//원본 배열 값 변경
bookArray1[0].setBookName("변경된 책 이름");
bookArray1[0].setAuthor("변경된 저자 이름");
//복사한 배열의 값은 안 바뀐다
bookArray1[0].showBookInfo();
bookArray2[0].showBookInfo();
}
}
4. 향상된 for문
- 배열의 처음부터 끝까지 모든 요소를 참조할 때 편리한 반복문
public class EnhancedForLoop {
public static void main(String[] args) {
String[] strArr = {"A", "B", "C"};
for(String str : strArr) {
System.out.println(str);
}
}
}