두가지 방법이 있다.
1. 타입[] 배열이름;
2. 타입 배열이름[];
되도록 첫번째 방법을 사용할 것을 권장한다.
배열을 초기화할 시 배열의 길이를 명시해야 한다.
타입[] 배열이름 = new 타입[배열길이];
인덱스를 통해 접근하여 값을 설정하거나 사용하는 것이 가능하며, 각 인덱스의 값을 따로 초기화하지 않아도 타입에 맞는 값으로 자동으로 초기화된다.
int[] grade1 = new int[3];
int[] grade2 = new int[3];
grade1[0] = 85;
grade1[1] = 65;
grade1[2] = 90;
grade2[0] = 85;
for (int i = 0; i < grade1.length; i++) {
System.out.print(grade1[i] + " "); // 85, 65, 90
}
for (int i = 0; i < grade2.length; i++) {
System.out.print(grade2[i] + " "); // 85, 0, 0
}
다음과 같이 배열을 초기화하면서 entry들을 원하는 값으로 설정할 수가 있다.
int[] grade1 = {70, 90, 80};
int[] grade2 = new int[]{70, 90, 80};
int[] grade4;
grade4 = new int[]{70, 90, 80}; // 이미 선언된 배열은 이 방법만 가능
범위 밖의 index에 접근할 경우 ArrayIndexOutOfBounds 에러가 발생한다.
int[] grade = new int[3];
System.out.print(grade[4]); // ArrayIndexOutOfBounds
배열의 요소로 1차원 배열을 가진다.
다음과 같이 3가지 방법이 있다.
1. 타입[][] 배열이름;
2. 타입 배열이름[][];
3. 타입[] 배열이름[];
int[][] arr = new int[2][3];
다음과 같이 배열 리터럴 안에 배열을 넣는 방식으로 초기화 할 수가 있다.
int[][] arr = {
{10, 20, 30},
{40, 50, 60}
};
int[][] arr2;
arr2 = new int[][]{
{10, 20, 30},
{40, 50, 60}
};
2차원 배열의 요소로 길이가 각각 다른 배열을 넣을 수 있다.
이렇게 다른 길이의 배열을 저장한 배열을 가변 배열이라고 한다.
각 배열의 길이는 arr[i].length로 접근하면 된다.
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[4];
arr[2] = new int[1];
int[][] arr2 = {
{10, 20},
{10, 20, 30, 40},
{10}
};
2차원 이상의 배열을 의미한다.
n차원 배열은 (n - 1)차원 배열을 요소로 가진다.
Java에서 기본적으로 제공하는 메서드를 사용하거나, for문을 이용하여 복사할 수 있다.
int[] arr1 = new int[]{1, 2, 3, 4, 5};
int newLen = 10;
// 1. System 클래스의 arraycopy() 메소드
int[] arr2 = new int[newLen];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
// 2. Arrays 클래스의 copyOf() 메소드
int[] arr3 = Arrays.copyOf(arr1, 10);
// 3. Object 클래스의 clone() 메소드\
int[] arr4 = (int[])arr1.clone();
JDK 1.5부터 지원하는 문법으로, 배열뿐만 아니라 컬렉션 프레임워크에서 유용하게 사용된다.
for (타입 변수이름 : 배열이나컬렉션이름) {
배열의 길이만큼 반복적으로 실행하고자 하는 명령문;
}
int[] arr = new int[]{1, 2, 3, 4, 5};
for (int e : arr) {
System.out.print(e + " ");
e += 10;
}
http://tcpschool.com/java/java_array_oneDimensional
http://tcpschool.com/java/java_array_twoDimensional
http://tcpschool.com/java/java_array_application