[자바 기초] 배열 Array
2021, Jun 25
배열
배열의 정의
- 같은 자료형의 변수를 하나의 묶음으로 다루는 것
- 자바에서 배열은 객체(Object)에 속함
- 배열의 요소들에는 인덱스(index)라는 번호가 붙음
- 인덱스를 통해 외부에서 배열 요소에 접근 가능
배열 선언과 할당
-
배열 선언
자료형[] 배열명; 자료형 배열명[];
-
배열 할당
자료형[] 배열명 = new 자료형[배열크기]; 자료형 배열명[] = new 자료형[배열크기];
int[] arr = new int[3]; int arr[] = new int[3];
배열의 저장 구조
- 배열은 참조 변수로 Heap 영역에 할당, 배열 공간의 주소를 저장
- 배열 공간의 주소를 이용해 인덱스를 참조하는 방식으로 값 처리
배열 초기화
-
인덱스를 이용한 초기화
int[] i = new int[3]; i[0] = 1; i[1] = 2; i[2] = 3;
-
for문을 이용한 초기화
int i = new int[3]; for(int j=0;j<i.length;j++) i[j] = j+1;
for-each 루프
- JDK 1.5버전에서는 배열에 대하여 for-each 루프라 불리는 향상된 루프를 사용할 수 있음
-
for-each 루프를 통해 보다 쉽게 배열의 각 요소를 순차적으로 접근 가능
int[] list = {1,2,3,4,5}; for(int e : list){ System.out.println(e); }
배열 복사
- 얕은 복사 Shallow Copy
- 객체의 주소 값만 가져와 참조형 변수에 저장
- 하나의 객체를 두 변수가 참조
int[] arr1 = new int[4]; int[] arr2 = arr1;
- 깊은 복사 Deep Copy
- 새로운 배열 객체를 생성하여 기존 배열의 데이터를 복사
for(int i=0; i<arr1.length ;i++){ arr2[i] = arr1[i]; } System.arraycopy(arr1, 0, arr2, 0 ,arr1.length); //arr1 배열의 값을 arr2에 복사 arr2 = Arrays.copyOf(arr1, arr1.length); arr2 = arr1.clone(); //arr1과 동일한 배열을 만들어 arr2에 할당
2차원 배열
2차원 배열의 정의
- 자료형이 같은 1차원 배열의 묶음
- 배열 안에 다른 배열 존재
- 2차원 배열은 할당된 공간마다 인덱스를 부여
2차원 배열의 선언과 할당
-
배열 선언
자료형[][] 배열명; 자료형 배열명[][]; 자료형[] 배열명[];
-
배열 할당
자료형[][] 배열명 = new 자료형[행크기][열크기]; 자료형 배열명[][] = new 자료형[행크기][열크기]; 자료형[] 배열명[] = new 자료형[행크기][열크기];
2차원 배열의 구조
- 행 : 주소 값을 갖고 있는 배열의 갯수 (2)
- 열 : 데이터 값을 갖고 있는 배열의 크기 (4)
2차원 배열 초기화
-
인덱스를 이용한 초기화
int[] i = new int[2][2]; i[0][0] = 1; i[0][1] = 2; i[1][0] = 3; i[1][1] = 4;
-
for문을 이용한 초기화
int[] i = new int[2][2]; for(int i=0; i<2; i++){ for(int j=0; j<2; j++){ i[i][j] = i*2 + j + 1; } }
-
선언과 동시에 초기화
int[] i = { {1, 2}, {3, 4} }