사용자로부터 값을 입력받아서 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라는 참조 변수에는 일차원 배열의 주소 값들을 갖고 있다.
일차원 배열은 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 주요 메서드]
static String toString(배열): 배열을 [#, #, #, ...] 형태의 문자열로 반환함
static int binarySearch(배열, key): 배열 중 key와 동일한 값을 찾은 후 그 값의 인덱스를 반환함(없다면 -1을 반환함)
static boolean equals(배열1, 배열2): 두 배열의 요소가 동일하면 true, 그렇지 않으면 false를 반환함
static void sort(배열): 배열을 오름차순으로 정렬함
static void fill(배열, value): 배열을 value로 채움
'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 |