배열복사 - 얕은복사/깊은복사 2023. 5. 17. 11:33

namin0_0·2023년 5월 29일
0

얕은복사

= 객체의 주소값만 가져와서 참조형 변수에 저장하고 하나의 객체를 두 변수가 참조하고 있는 것

= 하나의 배열을 공유하는 형태

배열은 참조형이기 때문에

int arr1 = arr2; 대입시키면

arr1과 arr2는 hip메모리의 같은 주소값을 공유한다.

1개의 주소를 같이 쓰고 있음!!!!

때문에 둘 중 어느 값을 바꾸어도 같이 바뀐다.

깊은복사

= 다른 객체를 생성하여 새로운 객체에 데이터 내용을 복사하는 것

= 새로운 배열을 만들어서 내부의 데이터만 복사함.

[깊은복사 방법 3가지]

  1. 첫번째 방법

: for문을 통한 1:1 값 대입

= 길이가 같은 배열을 새로 만들어서 for문으로 값을 복사


서로 주소값은 다르기 때문에 대입한 배열에만 값이 바뀜!

  1. 두번째 방법

: System.arraycopy() 메소드 이용하는 방법

1.원본데이터가 저장된 배열

2.원본 배열 중 복사하고싶은 데이터의 인덱스번호(시작)

3.새로운 배열(복사한 데이터가 들어갈 배열)

4.새로운 배열중 데이터가 들어갈 시작 인덱스번호

5.원본배열에서 데이터를 복사할 길이


3.세번째 방법

: Clone() 메소드를 이용하는 방법

= 완전히 배열을 깊은복사 할 때

int[] arr3 = arr1.clone();

profile
갓생살기프로젝트

0개의 댓글