Java

[Java] 배열의 복사

YaluStar 2014. 1. 7. 01:20

이번에는 배열의 복사에 대해서 알아보겠습니다

 

배열의 복사 방법은 2가지가 있는데

 

1. for 문을 사용해서 복사하는 방법

 

2. System 클래스의 arraycopy() 를 사용하는 방법

 

2가지가 있답니다.

 

먼저 for 문을 사용해서 복사하는 방법 간단한 예제를 보도록 하겠습니다

 

int[] number = {1,2,3,4,5};

int[] newNumber = new int[10];

 

for(int i=0; i<number.length; i++)  {

newNumber[i] = number[i];

}

 

for 문을 number 배열의 갯수만큼 반복하면서 newNumber 에 각각 값을 넣는 예제입니다.

newNumber[2] = 3 의 값이 들어가는 식이죠

근데 newNumber 배열은 10개 인데 number은 5개 입니다.

newNumber 배열의 나머지 공간에는 0 이 대입됩니다.

newNumber[10] = {1,2,3,4,5,0,0,0,0,0} 이렇게 됩니다.

 

이번에는 arraycopy() 방법을 사용해보록 하겠습니다

arraycopyfor 문을 사용하는것보다 훨씬 간단하게 복사할 수 있습니다.

 

그리고 arraycopy() 값만 복사하기 때문에 참조변수 배열인 경우에는 단지 주소값만을 복사할 뿐 참조변수가 가리키고 있는 객체를 복사하지는 않습니다.

 

예제)

System.arraycopy(arr1, 0, arr2, 1, 2);

 

=> arr1[0] 에서 arr2[1] 으로 2개의 데이터를 복사한다.

 

arr1[] = { '0', '1', '2', '3', '4' }

arr2[] = { 'A', 'B', 'C', 'D', 'E', 'F' }

 

이렇게 변수가 설정되어 있는 상태에서 

System.arraycopy(arr1, 0, arr2, 0, 2);  실행하게 되면

 

arr2[] = { 'A', '0', '1', 'D', 'E', 'F' }

이렇게 바뀌게 됩니다.

 

대충 감이 좀 오시나요??

 

그런데!!!!

복사하려는 배열의 위치가 복사하려는 내용보다 여유공간이 적으면 에러가 발생합니다

ArrayIndexOutOfBoundsException 에러가 발생하므로 조심하도록 합시다.

 

 

간단한 문제를 1개 드릴테니 풀어보시길 바랍니다

 

 

char[] abc = { 'A', 'B', 'C', 'D', 'E' }

char[] god = { '6', '7', '8', '9', '0' }

 

변수는 2개 설정 되있다고 하고

 

abc[2]  에서 god[1] 으로 3개의 데이터를 복사를 해보는 코드를 작성해보시면 됩니다.

 

for문 arraycopy 2개중 맘에 드는걸로 하셔도 되고 전부 써보셔도 됩니다.

 

 

답은 밑에~~

10

9

8

7

6

5

4

3

2

1

-----------------정답-------------------------------------------------

 

for 문

 

for(int i=0; i<3; i++)

{

god[i+1] = abc[i+2];

}

----------------------------------------

arraycopy()

 

System.arraycopy(abc, 2, god, 1, 3);

 

 

 

이상으로 배열의 복사에 대해서 알아보았습니다.

반응형

'Java' 카테고리의 다른 글

[Java] 조건문에서 &와 && 차이점에 대하여 알아보기  (0) 2019.01.19
[Java] 객체와 클래스  (0) 2019.01.12
[Java] 객체와 인스턴스  (0) 2014.05.01
[Java] 배열 속성인 length  (0) 2014.01.05
[Java] charAt 에 대해서  (0) 2014.01.04