배열과 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);
		}
	}
}

태그:

카테고리:

업데이트: