동일한 타입의 값들을 하나의 묶음으로 묶은 자료 구조.
차원: 배열이 중첩된 정도
배열이 중첩되었다: 배열의 요소가 또 다른 배열인 경우
가장 일반적인 배열의 형태로, 배열의 요소가 배열이 아닌 배열을 의미.
double[] temperatureOfJuly;
temperatureOfJuly = new double[31];
int
형, double
형과 같은 기본 타입의 경우 기본 타입의 값을 저장할 변수를 선언하는 시점에 얼마 만큼의 메모리 공간을 확보해야 하는지 컴퓨터가 알 수 있음배열 내 특정 요소에 할당되어져 있는 값에 접근하려면 배열 참조 변수의 이름과 배열의 인덱스를 활용하면 됨. 배열_참조_변수_이름[인덱스]
로 배열의 요소에 접근할 수 있음
배열이 가진 요소의 개수를 배열의 길이 또는 크기라고 함
배열_참조_변수_이름.length
로 얻을 수 있음
인덱스는 0부터 시작하므로 배열의 길이 - 1이 배열 마지막 요소의 인덱스가 됨
int[][] kcal = new int[31][3];
이 2차월 배열의 내부 배열은 int
형의 기본값인 0을 3개씩 저장하고 있으며, 외부 배열은 내부 배열 ({0, 0, 0}
) 31개를 저장하고 있음.
내부 배열은 3개의 0을 요소로 가지지만, 외부 배열의 각 요소는 내부 배열의 주소값을 저장하고 있음.
가변 배열: 배열이 2차원 이상일 때, 마지막 차수에 해당하는 배열의 길이를 고정하지 않아도 됨
int[][] ages = new int[5][];
외부 배열의 크기를 5으로 지정했으나, 마지막 차수에 해당하는 내부 배ㅕㅇㄹ에는 크기를 지정하지 않았음.
이처럼 마지막 차수에 해당하는 배ㅕㅇㄹ의 크기를 지정하지 않으면 가변 배열이 생성됨.
이 때 생성된 것은 내부 배열의 크기를 자유롭게 지정할 수 있는 외부 배열임. 즉, 외부 배열만 생성된 상태
int[] scores = { 100, 90, 85, 95, 100 };
// 일반적인 for문 및 while문을 사용하면 배열 요소의 값을 바꿀 수 있습니다.
for (int i = 0; i < scores.length; i++) {
scores[i] = 0;
}
System.out.println("for문 사용 : " + Arrays.toString(scores));
int j = 0;
while (j < scores.length) {
scores[j++] = 1;
}
System.out.println("while문 사용 : " + Arrays.toString(scores));
// 향상된 for문을 사용하면 배열 요소의 값을 바꿀 수 없습니다.
for (int score: scores) {
score = 2;
}
System.out.println("향상된 for문 사용 : " + Arrays.toString(scores));
/*
실행 결과
for문 사용 : [0, 0, 0, 0, 0]
while문 사용 : [1, 1, 1, 1, 1]
향상된 for문 사용 : [1, 1, 1, 1, 1]
*/