배열복사 arraycopy()/Arrays.copyOf/clone
배열복사 arraycopy()/Arrays.copyOf/clone
2022.03.281. arraycopy() 새로운 배열을 생성 한 후에 System 클래스에서 arraycopy 메소드를 불려와서 사용한다. 몇번 인덱스에 몇개를 어느 위치에 넣을건지 직접 지정이 가능하다. System.arraycopy( 원본배열, 원본배열시작위치(인덱스), 복사배열, 복사배열시작위치(인덱스), 복사할 길이); copy 배열의 길이는 10이며, 4에서 9까지 인덱스에서 배열을 복사합니다. Hashcode는 주소값을 비교한다고 생각하면 됩니다. 깊은복사라서 주소값은 다르며, copy 배열의 복사가 잘 된것을 확인 할 수 있습니다. 2. Arrays.copyOf 복사본 배열 = Arrays.copyOf(원본배열,새로운배열길이); 역시 hashcode값은 다르다. 인덱스 설정이 불가능하고 원본배열의 0번 인..
배열복사
배열복사
2022.03.27배열복사에는 2가지가 있습니다. 배열 복사 1. 얕은 복사 : 배열의 주소값만 복사합니다. (같은 객체를 참조합니다.) 2. 깊은 복사 : 새로운 배열을 만들고 기존 배열에 있는 데이터를 복사합니다. 1. 얕은 복사 얕은 복사는 배열을 만들 때 주소값을 참조합니다. 즉, int [] copy =origin을 하면 다음 표와 같이 arr2가 arr1의 배열이 참조하고 있는 heap영역의 주소값만 참조한다는 뜻입니다. 그렇다면 과연 arr1에서 값이 바뀌면 arr2도 값이 바뀔까요? 정답은 주소참조라서 그렇다입니다. 2. 깊은 복사 즉 주소 참조가 아닌 각각의 인덱스를 for문을 통해서 넣어줍니다. copyp[i]= origin[i] 그렇다면 다음과 같은 깊은 복사는 주소가 아닌 하나의 heap영역에 배열 ..