[자바/기초] 배열

배열

- 자료형의 종류가 아니라 자료형의 집합을 말한다.

1차원 배열

1차원 배열 선언

데이터타입[] 배열명;

- 배열을 사용하기 위해서는 먼저 배열명으로 배열을 선언해야 한다.

- 대괄호([ ])는 타입 뒤에 올 수도 있고, 배열명 뒤에 올 수도 있으나 보통은 데이터 타입 앞에 쓴다.

1차원 배열 생성

int[] days;		// 배열 선언
days = new int[3];	// 배열 생성

int[] days = new int[3];	// 배열 선언과 생성

- 실제 메모리에 배열 요소가 연속하여 생성되게 하기 위해서는 new 연산자를 이용하여 생성해줘야 한다.

- 배열은 생성 시 지정한 개수만큼 배열 요소를 연속하여 메모리에 생성한다.

[메모리에 생성된 1차원 배열 구조]
[메모리에 생성된 1차원 배열 구조]

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차원 배열 구조]
[메모리에 생성된 2차원 배열 구조]

- 2차원을 배열을 1차원 배열과 같이 하나의 행으로 이해하면 다소 어려움이 있다.
  이를 대체하기 위해 2차원 배열은 1차원 배열 요소만큼의 행과 2차원 배열 요소 만큼 가지는 행렬 구조로 이해하면 편하다.

[행과 열로 구성된 2차원 배열 구조]
[행과 열로 구성된 2차원 배열 구조]

2차원 배열 초기화

데이터타입[][] 배열명 = {{ }, { }};

- 배열 생성시 정수형 데이터 타입은 0으로, 실수형 데이터 타입은 0.0으로, boolean 타입은 false로, 참조타입은 null로 요소값들이 초기화된다.

- 값 목록으로 초기화 시 반드시 배열 선언과 초기화를 동시에 해야한다.

int[3][3] days = { {3, 1, 7}, {4, 2, 7}, {1, 2, 3} };

[값을 이용해서 2차원 배열을 초기화한 상태]
[값을 이용해서 2차원 배열을 초기화한 상태]

2차원 배열 접근

- 배열에 저장된 값에는 배열명과 인덱스를 이용하여 접근한다.

실행문(배열명[인덱스][인덱스]);

// 예시
System.out.println(daysdays[0][2]);	// 7

- 1차원 배열과 같이 배열 요소에는 생성된 요소의 크기 범위 내에서만 접근할 수 있다.
  만약, 이를 초과하여 접근하는 경우 "ArrayIndexOutOfBounds Exception" 예외가 발생한다.

2차원 배열의 길이

- 1차원 요소의 길이와 2차원 요소의 길이가 있다.

- 1차원 요소의 길이는 2차원 배열을 행렬로 표현 시 행의 수를 나타낸다.

- 2차원 요소의 길이는 각각의 행의 열의 수를 나타낸다.

// 1차원 요소의 길이
days.length;

// 2차원 요소의 길이
days[0].length

⊙ 참고 문헌

  1. 이병승, 「초보 개발자를 위한 자바:한 권으로 배우는 자바 마스터 가이드 북」, 영진닷컴, 2024, p223 - 229
  2. 이병승, 「초보 개발자를 위한 자바:한 권으로 배우는 자바 마스터 가이드 북」, 영진닷컴, 2024, p246 - 254
  3. 마종현, 「제로베이스 백엔드 취업 파트타임 스쿨 5기:Part 01. Java 기초-Chapter 01. Java 프로그래밍-06.다차원 배열」, 제로베이스, 2024, https://zero-base.co.kr/