동일 타입의 데이터 0개 이상을 하나의 연속된 메모리 공간에서 관리
변수가 하나 둘 증가하다보면 관리적인 측면에서도 용이성이 떨어진다. 이를 해결하기 위해 배열이 존재한다.
배열을 선언할 때 사용되는 변수는 단순히 참조공간을 가리키는 이름이다.
배열은 Reference Type으로 참조값을 가지고 있다. 만약 해당 배열이 담는 타입이 Primitive라면 각 공간에는 값이, Reference라면 또 다시 참조값을 가지고 있는 셈이 되는 것이다.
배열을 생성하는 방법은 크게 3가지가 존재한다.
Type[] arr_name = new Type[];
Type[] arr_name = {val...};
Type[] arr_name;
arr_name = new Type[]{val};
선언과 할당이 별도의 구문으로 이뤄지는 경우 할당 구문에서 *new Type[]을 잊지말자!
한번 선언된 배열은 크기를 변경할 수 없으므로 immutable하다.
이러한 문제점을 해결하기 위해 배열을 복사하는 방법이 있다.
2차원 배열은 Arrays of Array이다.
int[][] arr = new int[3][2];
arr.length = 3;
arr[0].length => 2
int[][] arr = new int[3][];
arr.length => 3
arr[0].length => null pointer exception
arr[0] = new int[4];
arr[1] = new int[2];
arr[0].length => 4
arr[1].length => 2