IT/Java
배열의 복사(깊은복사, 얕은복사)
성준하이
2022. 7. 29. 08:54
반응형
포스팅 쓰기 앞서, 이 복사에 대한 개념은 현재 탭인 자바 뿐 아니라 다른 언어에서도 비슷하게 적용이 된다.
그냥 모르고 사용을 하면 위험하니 개념을 알려주기 위해 포스팅을 작성이고 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]; } |
이렇게 변수 하나씩 삽입을 시켜줘야한다.
반응형