º Language º/Java

[자바기초] 배열 | 객체 배열 사용하기

Poony 2023. 3. 7. 16:16

# 객체 배열이 뭐야?

 

- 배열 안에 객체 인스턴스가 담겨 있는 것

- 참조 자료형을 선언하는 객체 배열

 

 

# 객체 배열 만들기

 

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문 코드예시

 

> 위의 향상 된 for문은 객체 배열 혹은 기본 정수 배열에서도 가능 함.

int[] arr = {1,2,3,4,5};
	
	for(int num : arr) {
		System.out.println(num);
	}