배열이란 같은 타입의 변수들을 하나의 묶음으로 묶은 자료 구조를 의미한다.
int num1, num2, num3, num4, num5; // 배열을 사용하지 않는 경우
int[] num = new int[5]; // 배열을 사용하는 경우
// 배열을 다루기 위한 참조변수 선언
int[] value; // 배열의 선언, 타입[] 변수명;
// 실제 저장공간 생성
value = new int[5]; // 배열의 생성, 변수명 = new 타입[길이]
// 배열의 선언과 생성을 한줄로 간략화
int[] value = new int[5];
// 원하는 값으로 배열의 생성과 초기화
int[] num = {1, 2, 3, 4, 5, 6, ..., 100};
배열이 가진 각 값을 배열의 요소라고 부르고 해당 요소는 0에서 시작하는 번호를 부여받으며 이 번호를 인덱스(index)라고 한다.
배열의 첫 번째 요소의 인덱스는 0이며 마지막 요소의 인덱스는 [배열의 길이 - 1] 이 된다.
arr[5] = 99; // 배열 arr의 6번째 요소에 99를 저장
int value = arr[5]; // 배열 arr의 6번째 요소에 저장된 값을 value에 저장
// 배열은 인덱스를 통해 변수나 수식 사용 가능
num[0] = 0;
num[1] = 5;
num[2] = 10;
num[3] = 15;
// 위 코드를 for문을 사용한 경우
for(int i = 0; i < num.length; i++){
num[i] = 5 * i;
}
배열의 차원이란 배열이 중첩된 정도를 의미한다. 즉, 배열이 중첩되었다는 것은 배열의 요소가 또 다른 배열인 경우를 의미한다. 2차원 이상의 배열은 다차원 배열이라고 부른다.
int[] num = {10, 15, 20, 25};
int[][] num = { {10, 15, 20, 25}, {30, 35, 40, 45} };
가장 일반적인 배열의 형태로 배열의 요소가 배열이 아닌 배열을 의미한다.
int[] arr;
arr = new int[10];
2차원 배열은 주로 테이블 형태의 데이터를 담는데 사용된다.
// 2행 4열의 2차원 배열을 생성
int[][] num = new int[2][4];
배열이 2차원 이상일 때 마지막 차수에 해당하는 배열의 길이를 고정하지 않은 배열이다.
// 가변 배열의 선언과 생성
int[][] arr = new int[3][];
// 내부 배열을 생성하려면 외부 배열의 각 요소에 할당
arr[0] = new int[3];
arr[1] = new int[4];
arr[2] = new int[5];
System.out.println("arr[0] = " + Arrays.toString(arr[0]));
System.out.println("arr[1] = " + Arrays.toString(arr[1]));
System.out.println("arr[2] = " + Arrays.toString(arr[2]));
// 출력 결과
// arr[0] = [0, 0, 0]
// arr[1] = [0, 0, 0, 0]
// arr[2] = [0, 0, 0, 0, 0]
배열은 반복문을 통해 탐색할 수 있다.
int[] num = {1, 2, 3, 4, 5};
int sum = 0;
for(int i = 0; i < num.length; i++){
sum += num[i];
}
System.out.println(sum);
// 출력 결과 : 15
int[] num = {1, 2, 3, 4, 5};
int sum = 0;
int i = 0;
while(i < num.length){
sum += num[i++];
}
System.out.println(sum); // 출력 결과 : 15
int[] num = {1, 2, 3, 4, 5};
int sum = 0;
for(int i : num){
sum += i;
}
System.out.println(sum); // 출력 결과 : 15
// 주의사항 - 향상된 for문은 배열 요소의 값을 바꿀 수 없음
for(int i : num){
sum = 2;
}
System.out.println(sum); // 출력 결과 : 15