본문 바로가기
IT/Java

배열의 복사(깊은복사, 얕은복사)

by 성준하이 2022. 7. 29.
반응형

포스팅 쓰기 앞서, 이 복사에 대한 개념은 현재 탭인 자바 뿐 아니라 다른 언어에서도 비슷하게 적용이 된다.

그냥 모르고 사용을 하면 위험하니 개념을 알려주기 위해 포스팅을 작성이고 java 탭에 작성한 이유는 테스트 코드가 자바 언어로 했기 때문이다.

 

배열이 있고 그 배열을 복사해야하는 때가 있다.

그럴때 그냥 변수 복사하듯이 복사를 하게 되면 아래와 같은 상황이 발생한다.

int[] a = {1,2,3,4};
int[] b = a;

이렇게 코드를 짜면 이 그림처럼 작동을 한다.

두개의 변수가 같은 배열을 바라보고 A 가 변경되면 B에서도 변경된 값이 나온다.

 

사실 이러면 복사의 의미가 없다.

 

그래서 배열을 복사할때는 깊은 복사를 해줘야하고 깊은 복사는 다음 그림과 같다.

이렇게 하기 위한 코드는 다음과 같다.

int [] a ={1,2,3,4};
int [] b = new int[a.length];
for (int i=0; i<a.length; i++){
     b[i]=a[i];
}

이렇게 변수 하나씩 삽입을 시켜줘야한다.

반응형

댓글