배열(Array)과 클래스(Class)는 데이터를 담는 역할을 한다는 점에서는 같지만 그 구조는 서로 다르다.
배열은 동일한 데이터를 담는 동일한 구조이며, 클래스는 서로 다른 데이터를 담는 이질적인 구조이다.
| 정수 | 정수 | 정수 | 정수 | 정수 | 정수 |
|---|---|---|---|---|---|
| arr[0] | arr[1] | arr[2] | arr[3] | arr[4] | arr[5] |
int[] arr = new int[6]; // 배열 생성
| 문자열 | 문자열 | 정수 | 문자열 | 정수 | 문자열 |
|---|---|---|---|---|---|
| name | dept | age | rmail | year | phoneNum |
Student student = new Student(); // 객체 생성
같은 타입의 데이터만 담는 동일한 구조인 Array와는 달리, Class는 서로 다른 타입의 데이터를 담는 이질적인 구조를 가진다.(클래스에 설계)
float[] arr = new float[4]; // 배열 생성
arr[0] = 10.5f; // 같은 타입의 데이터를 여러개 가진다.
arr[1] = 30.22f;
arr[2] = 23.3f;
arr[3] = 33.333f;
Student[] student = new Student[4]; // 객체 배열 생성
student[0] = new Student("홍길동", "컴공", "23", "email1", "2023110", "010-1111-1111"); // 객체 배열 객체 생성 및 초기화(객체가 각각 Heap Memory에 생성됨)
student[1] = new Student("나길동", "전기", "21", "email2", "2023110", "010-1111-2222");
student[2] = new Student("김길동", "상경", "24", "email3", "2023110", "010-1111-3333");
student[3] = new Student("이길동", "영어", "23", "email4", "2023110", "010-1111-4444");

MovieDTO배열을 각각 출력해본 결과 서로 다른 주소 값이 나옴
Heap Memory에 생성된 객체 각각의 주소값이 배열과 연결되어 저장된다.(배열 공간마다 각각 다른 주소값을 가진다는 의미)