배열
- 자료형의 종류가 아니라 자료형의 집합을 말한다.
1차원 배열
1차원 배열 선언
데이터타입[] 배열명;
- 배열을 사용하기 위해서는 먼저 배열명으로 배열을 선언해야 한다.
- 대괄호([ ])는 타입 뒤에 올 수도 있고, 배열명 뒤에 올 수도 있으나 보통은 데이터 타입 앞에 쓴다.
1차원 배열 생성
int[] days; // 배열 선언
days = new int[3]; // 배열 생성
int[] days = new int[3]; // 배열 선언과 생성
- 실제 메모리에 배열 요소가 연속하여 생성되게 하기 위해서는 new 연산자를 이용하여 생성해줘야 한다.
- 배열은 생성 시 지정한 개수만큼 배열 요소를 연속하여 메모리에 생성한다.
1차원 배열 초기화
배열명[인덱스] = 값;
- 배열명에 해당되는 배열에 접근한 후, 인덱스 번호에 해당되는 요소에 우측의 값을 저장한다.
- 배열의 첫 번째 요소의 인덱스는 1이 아니라 0으로 시작된다.
days[0] = 7;
days[1] = 10;
days[2] = 17;
- 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차원을 배열을 1차원 배열과 같이 하나의 행으로 이해하면 다소 어려움이 있다.
이를 대체하기 위해 2차원 배열은 1차원 배열 요소만큼의 행과 2차원 배열 요소 만큼 가지는 행렬 구조로 이해하면 편하다.
2차원 배열 초기화
데이터타입[][] 배열명 = {{ }, { }};
- 배열 생성시 정수형 데이터 타입은 0으로, 실수형 데이터 타입은 0.0으로, boolean 타입은 false로, 참조타입은 null로 요소값들이 초기화된다.
- 값 목록으로 초기화 시 반드시 배열 선언과 초기화를 동시에 해야한다.
int[3][3] days = { {3, 1, 7}, {4, 2, 7}, {1, 2, 3} };
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/