배열은 같은 타입의 변수를 사용하기 편하게 하나로 묶어둔 것이다. 이전 예제를 배열을 사용하도록 변경해보자. 참고로 단계적으로 구조를 변경해 나갈 것이다.
package array;
public class Array1Ref1 {
public static void main(String[] args) {
int[] students; // 배열 변수 선언
students = new int[5]; // 배열 생성
// 변수 값 대입
students[0] = 90;
students[1] = 80;
students[2] = 70;
students[3] = 60;
students[4] = 50;
// 변수 값 사용
System.out.println("학생1 점수 = " + students[0]);
System.out.println("학생2 점수 = " + students[1]);
System.out.println("학생3 점수 = " + students[2]);
System.out.println("학생4 점수 = " + students[3]);
System.out.println("학생5 점수 = " + students[4]);
}
}
지금부터 아주 간단해보이는 다음 두 줄을 아주 자세히 설명하겠다.
int[] students; // 1. 배열 변수 선언
students = new int[5]; // 2. 배열 생성
배열 변수 선언
int[] students;
와 같이 배열 변수를 선언해야 한다.int[]
처럼 타입 다음에 대괄호([]
)가 들어간다는 점이다.int a
에는 정수를, double b
에는 실수를 담을 수 있다.int[] students
와 같은 배열 변수에는 배열을 담을 수 있다. (배열 변수에는 10, 20 같은 값이 아니라 배열이라는 것을 담을 수 있다.)배열 생성
new int[5]
라고 입력하면 오른쪽 그림과 같이 총 5개의 int
형 변수가 만들어진다.new
는 새로 생성한다는 뜻이고, int[5]
는 int
형 변수 5개라는 뜻이다. 따라서 int
형 변수 5개를 다룰 수 있는 배열을 새로 만든다는 뜻이다.int student1
, int student2
, … int student5
까지 총 5개의 변수를 직접 선언했다. 배열을 사용하면 이런 과정을 한번에 깔끔하게 처리할 수 있다.배열과 초기화
new int[5]
라고 하면 총 5개의 int
형 변수가 만들어진다. 자바는 배열을 생성할 때 그 내부값을 자동으로 초기화한다.0
, boolean
은 false
, String
은 null
(없다는 뜻이다.)로 초기화된다.배열 참조값 보관
new int[5]
로 배열을 생성하면 배열의 크기만큼 메모리를 확보한다.int
형을 5개 사용하면 4byte * 5
→ 20byte
를 확보한다.x001
)을 반환한다.x001
이라고 표현한 것이 참조값이다. (실제로 x001
처럼 표현되는 것은 아니고 이해를 돕기 위한 예시이다.)int[] students
에 생성된 배열의 참조값(x001
)을 보관한다.int[] students
변수는 new int[5]
로 생성된 배열의 참조값을 가지고 있다.new int[5]
자체에는 아무런 이름이 없다! 그냥 int
형 변수를 5개 연속으로 만드는 것이다. 따라서 생성한 배열에 접근하는 방법이 필요하다. 따라서 배열을 생성할 때 반환되는 참조값을 어딘가에 보관해두어야 한다. 앞서 int[] students
변수에 참조값(x001
)을 보관해두었다. 이 변수를 통해서 이 배열에 접근할 수 있다.이 부분을 풀어서 설명하면 다음과 같다.
int[] students = new int[5]; // 1. 배열 생성
int[] students = x001; // 2. new int[5]의 결과로 x001 참조값 반환
students = x001; // 3. 최종 결과
참조값을 확인하고 싶다면 다음과 같이 배열의 변수를 출력해보면 된다.
System.out.println(students); // [I@3f99bd52 @앞의 [I는 int형 배열을 뜻한다. @뒤에 16진수는 참조값을 뜻한다.