배열 복사
프로그래밍을 하다 보면 배열을 복사 해야 할 경우가 생기는 데 그 복사를 어떻게 하는 가.
● 얕은 복사
참조값만 복사. 요소 값(배열 방에 있는 값)을 변경 했을 때 다른 쪽에도 영향을 준다.
쉽게 말하면, 몸 하나에 이름이 두개인 경우라고 볼 수 있다.
int [ ] a = {1,2,3,4,5};
// a 라는 int 타입의 참조 변수가 메인 스택에 만들어 지고 힙에 배열 5개 만들어짐
int [ ] b = a;
// 미리 선언 된 배열 a 는 힙 영역에 저장 되어 주소값만 있다.
그래서 b 에는 a 의 주소값만 전달 되고, 요소값({1,2,3,4,5}) 은 전달하지 않는다.
힙에 있는 배열({1,2,3,4,5}) 은 하나인데 이름만 a,b로 두개
int a[] = { 1, 2, 3, 4, 5 };
int[] b = a;
int i;
System.out.println("배열 a 요소");
for (i = 0; i < a.length; i++) {
System.out.println(a[i] + "\t");
}
System.out.println();
System.out.println("배열 b 요소");
for (i = 0; i < b.length; i++) {
System.out.println(b[i] + "\t");
}
System.out.println();
System.out.println("배열 a의 참조값" + a);
System.out.println("배열 b의 참조값" + b);
b[1] = 20; //b배열[1] 위치에 있는 것을 20으로 초기화
System.out.println("b[1]변경후 배역 a 요소");
for (i = 0; i < a.length; i++) {
System.out.println(a[i] + "\t");
}
System.out.println();
System.out.println("b[1]변경후 배역 b 요소");
for (i = 0; i < b.length; i++) {
System.out.println(b[i] + "\t");
}
System.out.println();
위의 코드를 실행해보면 int a [ ] 와 int b [ ] 의 요소, 참조값, 변경 후의 값까지 모두 같은 것을 알 수 있다.
'JAVA' 카테고리의 다른 글
[JAVA] 자바 배열과 for 문 함께 사용 (0) | 2023.02.21 |
---|---|
[JAVA] 자바 배열 복사 (깊은 복사) (0) | 2023.02.20 |
[JAVA] 자바 2차원 배열 (0) | 2023.02.20 |
[JAVA] 자바 배열 (0) | 2023.02.20 |
[JAVA] 자바 기타 제어문 : break, continue, return (0) | 2023.02.19 |