배열
- 자료형의 종류가 아니라 자료형의 집합을 말한다.
1차원 배열
1차원 배열 선언
데이터타입[] 배열명;
- 배열을 사용하기 위해서는 먼저 배열명으로 배열을 선언해야 한다.
- 대괄호([ ])는 타입 뒤에 올 수도 있고, 배열명 뒤에 올 수도 있으나 보통은 데이터 타입 앞에 쓴다.
1차원 배열 생성
int[] days; // 배열 선언
days = new int[3]; // 배열 생성
int[] days = new int[3]; // 배열 선언과 생성
- 실제 메모리에 배열 요소가 연속하여 생성되게 하기 위해서는 new 연산자를 이용하여 생성해줘야 한다.
- 배열은 생성 시 지정한 개수만큼 배열 요소를 연속하여 메모리에 생성한다.
![[메모리에 생성된 1차원 배열 구조]](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
1차원 배열 초기화
배열명[인덱스] = 값;
- 배열명에 해당되는 배열에 접근한 후, 인덱스 번호에 해당되는 요소에 우측의 값을 저장한다.
- 배열의 첫 번째 요소의 인덱스는 1이 아니라 0으로 시작된다.
days[0] = 7;
days[1] = 10;
days[2] = 17;
![[배열 초기화 후 배열 상태]](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
- new 연산자 없이 동시에 값을 이용해서 초기화하여 바로 메모리를 생성할 수 있다.
int[] days = {7, 10, 17};
1차원 배열 접근
- 배열에 저장된 값에는 배열명과 인덱스를 이용하여 접근한다.
실행문(배열명[인덱스]);
// 예시
days[0] = 7;
System.out.println(days[0]);
- 배열 요소에는 배열 선언 시 선언한 데이터 타입과 동일한 데이터만 저장할 수 있다.
- 배열 요소에는 생성된 요소의 크기 범위 내에서만 접근할 수 있다.
만약, 이를 초과하여 접근하는 경우 "ArrayIndexOutOfBounds Exception" 예외가 발생한다.
1차원 배열의 길이
- 배열의 길이는 배열이 가지고 있는 요소의 개수를 의미한다.
배열명.length;
- 선언한 배열명의 length 속성으로 배열의 길이를 얻을 수 있다. 또한 length 속성은 상수로써 값을 변경할 수 없다.
2차원 배열
2차원 배열 선언
데이터타입[][] 배열명;
- 2차원 배열은 1차원 배열 기호([ ]) 다음에 다시 2차원 배열 기호([ ])를 하나더 사용하여 선언한다.
2차원 배열 생성
int[][] days; // 배열 선언
days = new int[3][3]; // 배열 생성
int[][] days = new int[3][3]; // 배열 선언과 생성
- 1차원 배열과 동일하게 new 연산자를 사용해서 다음에 지정한 배열 요소만큼 메모리를 생성한다.
- 첫 번째[3]은 1차원 배열 요소 크기를 나타내며, 두 번째[3]은 2차원 배열 요소 크기를 나타낸다.
![[메모리에 생성된 2차원 배열 구조]](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
- 2차원을 배열을 1차원 배열과 같이 하나의 행으로 이해하면 다소 어려움이 있다.
이를 대체하기 위해 2차원 배열은 1차원 배열 요소만큼의 행과 2차원 배열 요소 만큼 가지는 행렬 구조로 이해하면 편하다.
![[행과 열로 구성된 2차원 배열 구조]](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
2차원 배열 초기화
데이터타입[][] 배열명 = {{ }, { }};
- 배열 생성시 정수형 데이터 타입은 0으로, 실수형 데이터 타입은 0.0으로, boolean 타입은 false로, 참조타입은 null로 요소값들이 초기화된다.
- 값 목록으로 초기화 시 반드시 배열 선언과 초기화를 동시에 해야한다.
int[3][3] days = { {3, 1, 7}, {4, 2, 7}, {1, 2, 3} };
![[값을 이용해서 2차원 배열을 초기화한 상태]](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
2차원 배열 접근
- 배열에 저장된 값에는 배열명과 인덱스를 이용하여 접근한다.
실행문(배열명[인덱스][인덱스]);
// 예시
System.out.println(daysdays[0][2]); // 7
- 1차원 배열과 같이 배열 요소에는 생성된 요소의 크기 범위 내에서만 접근할 수 있다.
만약, 이를 초과하여 접근하는 경우 "ArrayIndexOutOfBounds Exception" 예외가 발생한다.
2차원 배열의 길이
- 1차원 요소의 길이와 2차원 요소의 길이가 있다.
- 1차원 요소의 길이는 2차원 배열을 행렬로 표현 시 행의 수를 나타낸다.
- 2차원 요소의 길이는 각각의 행의 열의 수를 나타낸다.
// 1차원 요소의 길이
days.length;
// 2차원 요소의 길이
days[0].length
⊙ 참고 문헌
- 이병승, 「초보 개발자를 위한 자바:한 권으로 배우는 자바 마스터 가이드 북」, 영진닷컴, 2024, p223 - 229
- 이병승, 「초보 개발자를 위한 자바:한 권으로 배우는 자바 마스터 가이드 북」, 영진닷컴, 2024, p246 - 254
- 마종현, 「제로베이스 백엔드 취업 파트타임 스쿨 5기:Part 01. Java 기초-Chapter 01. Java 프로그래밍-06.다차원 배열」, 제로베이스, 2024, https://zero-base.co.kr/