[JAVA] 배열
여러개의 데이터를 하나의 이름으로 저장하여 편리하게 사용하기 위해 배열을 사용한다.
-
C/C++과의 차이점
C/C++와는 달리 항상 동적으로 할당 → 동적 할당이기 때문에 heap에 할당
별도의 반환이 필요없이 제거되거나 재할당되면 GC에서 알아서 반환
자동으로 초기화 (0, 0.0, null, false)
1차원 Array
java에서는 배열은 객체이기 때문에 new 연산자를 사용하여 객체를 생성해 준다.
//1. 배열 선언
int[] arr1;
int arr2[]; // C/C++ 스타일
//2. 배열 생성 (메모리 할당)
arr1 = new int[5];
//3. 값 할당
for (int i = 0; i < 5; i++)
arr1[i] = i;
//선언 + 생성
int[] arr3 = new int[5];
//선언 + 생성 + 값 할당
int[] arr4 = {0, 1, 2, 3, 4};
int[] arr5 = new int[]{0, 1, 2, 3, 4};
-
인덱스를 통해 접근
배열의 인덱스는 0부터 배열길이-1까지!
int[] arr = int[10]; arr[-1] = -1; //error ArrayIndexOutOfBoundsException arr[0] = 0; //... arr[9] = 9; arr[10] = 10; //error ArrayIndexOutOfBoundsException
-
자동으로 초기화
정수형 0 실수형 0.0 논리형 false 객체 null
-
힙에 메모리 할당한 후, 0번째 주소 스택에 저장
배열의 길이
int len = arr.length; //배열 길이, 반환형 함수 아님 주의!
1차원 배열 복사 (Array Copy)
//소스배열, 시작위치, 목적배열, 시작위치, 복사할 길이
System.arraycopy(src, srcPos, dest, destPos, length);
//소스배열, 길이
dest = Arrays.copyOf(original, newLength);
2차원 Array
행과 열을 이용하여 데이터를 저장, 이용하기 위해 사용 배열의 배열로 처리
//1. 배열 선언
int[][] arr1;
int arr2[][]; // C/C++ 스타일
int[] arr3[];
//2. 배열 생성 (메모리 할당)
arr1 = new int[5][3];
arr2 = new int[5][];
arr2[0] = new int[1]; //열의 길이를 각각 다르게 생성
arr2[1] = new int[2];
arr2[2] = new int[3];
arr3 = new int[][]; //error! 반드시 첫번째를 채워야함.
arr3 = new int[][3]; //error!
//3. 값 할당
for (int i = 0; i < 5; i++)
for (int j = 0; j <3; j++)
arr1[i][j] = j;
//선언 + 생성
int[][] arr4 = new int[5][3];
댓글남기기