Notice
Recent Posts
Recent Comments
Link
쯔이's Dev
배열(1) 본문
반응형
<< 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 |
---|