본문 바로가기
Back-End/Java

[Java] 배열 공유

by 찐코딩 2021. 8. 16.

배열공유

상당히 중요한 개념이다.
배열 이름은 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으로 바뀐 것을 확인할 수 있다

댓글