본문 바로가기
Java

다차원 배열

by 쟈근꿈틀이 2022. 3. 29.
728x90

사용자로부터 값을 입력받아서 5층 빌라의 세대주를 저장하는 String형 배열을 만들어보자.

한 층에는 한 집만 있다고 가정한다.

String apartment = new String[5]으로 5개의 문자열 데이터를 저장할 수 있는 배열을 생성했다.

 

만약 한 층 당 집이 2채 있다면 new String[10]으로 10개의 문자열 데이터를 저장할 수 있는 배열을 생성하고 순서대로 세대주를 저장할 수도 있다.

 

하지만 이차원 배열을 생성하면 이를 더 효율적으로 저장할 수 있다.

new String[5][2]를 5행 2열이라고 생각하면 쉽게 이해할 수 있을 것이다.

 

이차원 배열도 일차원 배열과 같이 배열을 생성하면서 초기화할 수 있다.


String[][] householders = new String[3][5];

householders[1], householders[2]도 householders[0]과 동일한 구조의 배열을 가리킴

householders라는 참조 변수에는 일차원 배열의 주소 값들을 갖고 있다.

일차원 배열은 householders[0], householders[1], householders[2]인데 이 배열도 배열의 주소 값을 갖고 있다. 

householders[0]의 주소를 따라가면 5개의 String형 데이터를 저장할 수 있는 배열이 존재한다.

householders[0][1]에 값을 저장하고 싶을 때는 householders[0][1] = "김"의 형태로 사용한다.

 

이때 householders.length는 3이다. 또, householders[0].length는 5이다.

 


가변 배열

 

arr는 정수형 배열의 주소 값을 저장할 수 있는 참조 변수이다.

int[][] arr = new int[length][]로 length개의 주소 값을 저장할 공간을 만든다.

arr[i] = new int[n]으로 n개의 정수형 데이터를 저장할 수 있는 배열을 생성한다(메모리 영역을 할당 받음).

생성된 배열에 0부터 (배열의 크기 - 1)을 순서대로 대입한다.

arr[i]는 그 배열의 주소 값을 저장한다.

 

가변 배열도 생성과 초기화를 동시에 수행할 수 있다.

 


ArrayIndexOutOfBoundsException

배열의 인덱스를 벗어난 데이터를 참조할 시, 컴파일 타임이 아닌 실행 시간 중에 예외를 발생시킨다. 

즉, 컴파일 에러가 아닌 런타임 에러이다.

 


배열을 위한 Util 클래스 Arrays

[Arrays 주요 메서드]

Arrays.toString(배열)

static String toString(배열): 배열을 [#, #, #, ...]  형태의 문자열로 반환함


Arrays.binarySearch(배열, key)

static int binarySearch(배열, key): 배열 중 key와 동일한 값을 찾은 후 그 값의 인덱스를 반환함(없다면 -1을 반환함)


Arrays.equals(배열1, 배열2)

static boolean equals(배열1, 배열2): 두 배열의 요소가 동일하면 true, 그렇지 않으면 false를 반환함


Arrays.sort(배열)

static void sort(배열): 배열을 오름차순으로 정렬함


Arrays.fill(배열, value)

static void fill(배열, value): 배열을 value로 채움 

728x90

'Java' 카테고리의 다른 글

클래스, 변수, 메소드  (0) 2022.03.30
객체 지향 프로그래밍이란?  (0) 2022.03.30
배열  (0) 2022.03.29
[반복문]for문, while문, do~while문  (0) 2022.03.28
switch문  (0) 2022.03.28