많은 양의 데이터를 효율적으로 다루기 위해 배열(Array)을 사용
예를 들어 학생 5명의 점수를 관리한다고 할 때, 배열이 없다면 이렇게 작성해야 한다.
int student1 = 90;
int student2 = 80;
int student3 = 70;
int student4 = 60;
int student5 = 50;
int[] students; // 배열 변수 선언
students = new int[5]; // 배열 생성
int[] → int형 배열을 의미new int[5] → int 5개짜리 배열 생성0, boolean은 false, String(문자열)은 null로 초기화 된다.배열은 참조형(reference type)이다.
즉, 변수는 배열이 저장된 메모리 주소(참조값)를 가지고 있다.

int[] students = new int[5]; //1. 배열 생성
int[] students = x001; //2. new int[5]의 결과로 x001 참조값 반환
students = x001 //3. 최종 결과
→ x001은 배열의 주소이고, 이를 통해 배열에 접근한다.
System.out.println(students);
//출력 결과: `[I@16f65612` (int형 배열의 참조값)
[I@4617c264 @앞의 [I는 int형 배열을 뜻한다. @뒤에 16진수는 참조값을 뜻한다.
[]사이에 숫자 번호를 넣어주면 된다.
//변수 값 대입
students[0] = 90;
students[1] = 80;
//변수 값 사용
System.out.println("학생1 점수: " + students[0]);
System.out.println("학생2 점수: " + students[1]);
배열은 0부터 시작한다
new int[5]와 같이 5개의 요소를 가지는 int형 배열을 만들었다면 인덱스는 0,1,2,3,4가 존재한다.0 ~ (n-1)이 된다. 그래서 students[4]가 배열의 마지막 요소이students[5]와 같이 접근 가능한 배열의 인덱스 범위를 넘어가면 오류가 발생한다.int[] students; // 배열 변수 선언
students = new int[5]; // 배열 생성
// 초기화된 배열: {0, 0, 0, 0, 0}
// 배열에 값 대입
students[0] = 90;
students[1] = 80;
students[2] = 70;
students[3] = 60;
students[4] = 50;
int[] student; // 배열 선언
students = new int[]{90, 80, 70, 60, 50}; // 배열 생성과 초기화
int[] students = new int[]{90, 80, 70, 60, 50};
// 또는
int[] students = {90, 80, 70, 60, 50};
2차원 배열은 행(row)과 열(column)로 구성된 배열
int[][] arr = new int[2][3];
arr[0][0] = 1; // 1행 1열
int[][] arr = {
{1,2,3},
{4,5,6}
}; //행2, 열3
for (int row = 0; row < arr.length; row++) {
for (int column = 0; column < arr[row].length; column++) {
System.out.print(arr[row][column] + " ");
}
System.out.println(); //한 행이 끝나면 라인을 변경
}
배열 요소를 처음부터 끝까지 순회할 때 사용
각각의 요소를 탐색한다는 의미로 for-each문이라고도 많이 부른다.
for (변수 : 배열 또는 컬렉션) {
// 배열 또는 컬렉션의 요소를 순회하면서 수행할 작업
}
// 일반 for문
for(int i = 0; i < numbers.length; ++i) {
int number = numbers[i];
System.out.println(number);
}
// Enhanced For 문, for-each문
for (int number : numbers) {
System.out.println(number);
}