본문 바로가기

카테고리 없음

5.6.9_배열복사

-배열은 한 번 생성하면 크기를 변경할 수 없다. 

-더 많은 저장 공간이 필요하다면?

보다 큰 배열을 새로 만들고 이전 배열로부터 값들을 복사해야 한다. 


예를들어 길이가 2인 배열이 있다. 

x y

여기서 z를 추가로 넣고 싶을 땐

세 칸짜리 배열을 만들고

     

위의 배열 을 복사 한 후, 

x y  

 

z를 집어넣는다

x y z

 


배열 간의 항목 값을들 복사하는 방법 세 가지 

1. for문 이용

2. System.arraycopy() 메소드

3. Arrays 클래스 이용 (기본API클래스에서 설명)


1. for문으로 배열 복사

package sec06.exam07_array_copy;

public class ArrayCopyByForExample {

	public static void main(String[] args) {
		int[] oldIntArray = {1,2,3};
		int[] newIntArray = new int[5];
		
		//for문을 사용한 배열 복사
		for(int i=0; i<oldIntArray.length; i++) {
			newIntArray[i] = oldIntArray[i];
		}

		//newIntArray출력 메소드
		for(int i=0; i<newIntArray.length; i++) {
			System.out.print(newIntArray[i] + ", ");
		}
	}
}

 

실행결과:

1, 2, 3, 0, 0, 

 


2. System.arraycopy() 메소드를 이용한 복사

System.arraycopy(원본배열, 원본배열 시작인덱스, 새 배열, 새 배열 시작인덱스, 복사갯수);

 

만약 세 개짜리 배열 arr1이 있고

1 2 3

 

arr1을 다섯 개 짜리 arr2로 복사 하고 싶다면

1 2 3    

이렇게 적어주자. ↓

System.arraycopy(arr1, 0, arr2, 0, 3);

package sec06.exam07_array_copy;

public class ArrayCopyExample {

	public static void main(String[] args) {
		String[] oldStrArray = {"java", "array", "copy"};
		String[] newStrArray = new String[5];
		
		//배열복사 메소드
		System.arraycopy(oldStrArray, 0, newStrArray, 0, oldStrArray.length);

		//출력 메소드
		for(int i=0; i<newStrArray.length; i++) {
			System.out.print(newStrArray[i] + ", ");
		}
	}

}

실행결과:

java, array, copy, null, null,