배열공유
상당히 중요한 개념이다.
배열 이름은 heap영역의 시작 주소값을 저장하고 있기 때문에,
아래문장은 시작 주소값을 다른 배열의 배열명에 복사해 주는 명령문이다.
즉, 배열의 공유가 이루어지게 된다.
public static void main(String[] args) {
int[] arr= {10, 20, 30, 40, 50};
// 배열 이름은 heap영역의 시작 주소값을 저장하고 있기 때문에,
// 아래문장은 시작 주소값을 다른 배열의 배열명에 복사해 주는 명령문이다.
//즉, 배열의 공유가 이루어지게 된다.
int[] arrCopy=arr;
//배열 주소 출력
System.out.println(arr);
System.out.println(arrCopy);
//arr 배열의 값을 출력해보자.
for(int i=0; i<arr.length; i++) {
System.out.printf("arr[%d] = %d\n", i, arr[i]);
}
//arrCopy 배열의 값을 출력해보자.
for(int i=0; i<arrCopy.length; i++) {
System.out.printf("arrCopy[%d] = %d\n", i, arrCopy[i]);
}
//arr[0] 값 변경
arr[0]=100;
//arr[0], arrCopy[0] 값 출력
System.out.print("arr[0] = " + arr[0] + "\t");
System.out.print("arrCopy[0] = " + arrCopy[0]);
}
arrCopy 배열에 참조 변수 arr 를 참조하여 복사했다
둘의 각 요소의 값은 동일하다
arr[0] 의 값을 100으로 바꿨다
바꿔주지 않았던 arrCopy[0] 의 값도 100으로 바뀐 것을 확인할 수 있다
'Back-End > Java' 카테고리의 다른 글
[Java] 메소드(method)_메소드의 구조, call by value와 call by reference의 차이 (0) | 2021.08.16 |
---|---|
[Java] 다차원 배열과 가변 배열 (0) | 2021.08.16 |
[Java] 단축 for문(개선된 for문, for each문) (0) | 2021.08.11 |
[Java] 배열(array) (0) | 2021.08.11 |
[Java] 기타보조제어문(continue, break) (0) | 2021.08.11 |
댓글