쯔이's Dev

배열(1) 본문

JAVA/배열

배열(1)

jjhim531 2024. 7. 11. 05:57
반응형

<< 1차원 배열>>

타입이 같은 둘 이상의 데이터를 저장할 수 있는 1차원 구조의 메모리 공간

 

♠ 선언방법 ♠

자료형[ ] 변수명 = new 자료형[길이] 

ex)

 int[ ] arr = new int[4];     // 길이가 4인 int형 1차원 배열의 생성문

- 배열의 참조변수와 인스턴스의 선언을 따로따로 하는 것도 가능!

ex)

 int[ ] arr;
 arr = new int[4];

 

♠ 배열 저장구조 ♠

배열은 참조 변수로 Stack영역에 할당되며 배열 공간의 주소를 저장

배열 공간의 주소를 이용해 인덱스를 참조하는 방식으로 값 처리

♠ 배열의 활용 = 값의 저장과 참조 ♠

ex) 

 int[] arr = new int[4]

arr[0] = 6; // 값의 저장 : 첫번쨰 요소

arr[1] = 8; // 값의 저장 : 두번쨰 요소

arr[2] = 9; // 값의 저장 : 세번쨰 요소

arr[3] = 7; // 값의 저장 : 네번쨰 요소

int num = arr[0] + arr[1] + arr[2] + arr[3] ;

 

♠ 배열 초기화 ♠

- 기본 자료형 배열은 모든 요소 0으로 초기화(특별히 지정해주지 않았다면)

(기본 자료형 : byte, short, int, long, float, double, char, boolean)

- String과 같은 객체배열은 모든요소 null로 초기화 (특별히 지정해주지 않았다면)

♠ 배열 초기화 방법 ♠

방법 1 : int[ ] arr = new int[ ]{1, 2, 3};

방법 2 : int[ ]  arr = {1, 2, 3};

<< 배열 복사(얕은 복사)>>

* 주소를 복사하여 서로 다른 두 변수가 하나의 배열(또는 객체)을 참조하는 상태를 만드는 복사 방법

int[ ] arr1 = new int[4];

int[ ] arr2 = arr1; // arr1의 주소값을 복사하여 arr2가 가리키게 만든다.

 

<< 배열 복사(깊은 복사)>>

- 같은 자료형의 새로운 배열r객체를 생성하여 기본 배열의 데이터를 모두 복사하는 방법

 

 

int[] arr = {1,2,3,4,5}; // 원본
		
		// 1. for문을 이용한 깊은 복사
		int[] copyArr1 = new int[arr.length]; // 5칸 짜리 배열 생성
		
		for(int i=0; i<arr.length; i++) {
			copyArr1[i] = arr[i];
		}
	
		// 2. System.arraycopy(원본 배열, 원본 복사 시작 인덱스,
		//					   복사 배열, 복사 배열의 삽입 시작 인덱스, 복사 길이);
		
		int[] copyArr2 = new int[arr.length];
		System.arraycopy(arr, 0, copyArr2, 0, arr.length);
		
		// 3. 복사할 배열 참조 변수 = Arrays.copyof(원본 배열, 복사할 길이);
		int[] copyArr3 = Arrays.copyOf(arr, arr.length);
		
		// 값 변경 후 확인
		copyArr1[4] = 0;
		copyArr2[4] = 999;
		copyArr3[4] = 5000;
		
		System.out.println("arr : " + Arrays.toString(arr));
		System.out.println("copyArr1 : " + Arrays.toString(copyArr1));
		System.out.println("copyArr2 : " + Arrays.toString(copyArr2));
		System.out.println("copyArr3 : " + Arrays.toString(copyArr3));

 

☆쯔이's Tip ☆

쉽게 말하자면,

깊은 복사는 객체의 실제 값을 복사 하는 반면,

얕은 복사는 객체의 주소(reference)값을 복사한다.

 

728x90
반응형

'JAVA > 배열' 카테고리의 다른 글

배열(2) - 2차원  (1) 2024.07.12