[Java] 배열 - 얕은 복사, 깊은 복사

C____JIN·2022년 10월 14일
0

Java

목록 보기
8/9
post-thumbnail

얕은 복사

복사된 배열이나 원본배열이 변경될 때 서로 간의 값이 같이 변경됨

코드

int[] a = {1, 2, 3, 4};
int[] b = a;
  • 배열 a와 b는 같은 값을 공유해서 b의 값을 변경하면 a의 값도 변경됨

깊은 복사

복사된 배열이나 원본배열이 변경될 때 서로 간의 값은 변경되지 않음

코드

int[] a = {1, 2, 3, 4};
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++){
	b[i] = a[i];
}
  • 배열 a의 값을 복사한 새로운 배열 b를 생성하여 b의 값을 바꿔도 a의 값은 바뀌지 않음

배열의 복사하는 메서드

Object.clone()

  • 깊은 복사
int[] a = {1, 2, 3, 4};
int[] b = a.clone; // {1, 2, 3, 4}

Arrays.copyOf(Objcet, end)

  • Object의 처음 ~ 지정한 legth 깊은 복사
int[] a = {1, 2, 3, 4};
int[] b = Arrays.copyOf(a, a.length); // {1, 2, 3, 4}

Arrays.copyOfRange(Object, start, end)

  • Object를 지정한 시작점 ~ 지정한 끝점 깊은 복사
int[] a = {1, 2, 3, 4};
int[] b = Arrays.copyOfRange(a, 1, 3); // {2, 3, 4}
profile
개발 블로그🌐 개발일지💻

2개의 댓글

comment-user-thumbnail
2022년 10월 14일

얕은 복사, 깊은 복사란 용어가 있군요! 덕분에 알아갑니다 ㅎㅎ
어디선가 보기로 copyOfRange가 성능이 구리대요!

1개의 답글