[자바기초] 배열 | 객체 배열 사용하기
# 객체 배열이 뭐야?
- 배열 안에 객체 인스턴스가 담겨 있는 것
- 참조 자료형을 선언하는 객체 배열
# 객체 배열 만들기
1. 배열만 생성한 경우 요소는 null로 초기화 됨
2. 각 요소는 new를 활용하여 생성한 후 저장해야 함
코드예시

> library[0] = new Book("",""); 와 같은 코드입력이 없으면 값이 null 값으로 나옴
각각의 메모리 공간 주소
| library[0] | library[1] | library[2] | library[3] | library[4] |
↓ ↓ ↓ ↓ ↓
| 태백산맥 조정래 |
데미안 헤르만 헤세 |
어떻게 살 것인가 유시민 |
토지 박경리 |
어린왕자 생첵쥐페리 |
> 메모리 공간 주소(객체) 안에 각각의 정보(인스턴스)를 입력할 수 있음. 이는 각 주소마다 꼭 1권의 책이라고 이해하기 보다 각 주소마다 원하는 만큼의 정보를 넣어 놓은 것이라고 이해해야 함.
# 배열 복사하기
- 기존 배열과 같은 배열을 만들었거나 배열이 꽉 찬 경우 더 큰 배열을 만들고 기존 배열 자료를 복사할 수 있다.
System.arraycopy(src,srcPos,dest,desrPos,length);
| 매개 변수 | 설명 |
| src | 복사할 배열 |
| srcPos | 복사할 배열의 첫 위치 |
| dest | 붙여 넣을 대상 배열 |
| destPos | 대상 배열에 붙여 넣기를 시작할 첫 위치 |
| length | src에서 dest로 자료를 복사할 요소 개수 |
# 객체 배열 복사하기
- 얕은 복사 : 배열 요소의 주소만 복사 되므로 배열 요소가 변경되면 복사된 배열의 값도 변경 됨
코드예시

결과 값

- 깊은 복사 : 서로 다른 인스턴스의 메모리를 요소로 가지게 됨
코드예시

결과 값

# 향상된 for문 (enhanced for loop)
- 배열 요소의 처음부터 끝까지 모든 요소를 참조할 때 편리한 반복문
for(변수 : 배열) {
반복 실행문;
}

> 위의 향상 된 for문은 객체 배열 혹은 기본 정수 배열에서도 가능 함.
int[] arr = {1,2,3,4,5};
for(int num : arr) {
System.out.println(num);
}