자바에서 다차원, 또는 2차원 배열을 선언하는 방법을 소개합니다. 또한 다차원 배열을 println()
으로 화면에 출력하는 방법을 소개합니다.
2차원 배열은 배열 요소로 1차원 배열을 갖는 것을 말합니다. 다차원 배열은 2차원 이상의 배열을 말하는데, 4차원 배열은 배열 요소로 3차원 배열을 갖는 배열입니다.
이 글에서는 2차원 배열 선언을 예제로, 어떻게 다차원 배열을 선언하는지 알아보겠습니다.
1. 2차원 배열 선언 및 값 할당
2차원 배열은 아래와 같은 형태로 선언할 수 있습니다. columns는 2차원 배열의 열의 길이이며, rows는 행의 길이가 됩니다.
int[][] arr = new int[rows][columns];
2행 3열의 2차원 배열을 선언하려면 아래와 같이 선언하면 됩니다.
int[][] arr = new int[2][3];
위의 2차원 배열을 그림으로 표현하면 아래와 같습니다.
배열을 선언하면 기본적으로 모든 요소 값은 0으로 설정됩니다. 아래와 같이 다른 값으로 변경할 수 있습니다.
int[][] arr = new int[2][3];
arr[0][0] = 0;
arr[0][1] = 1;
arr[0][2] = 2;
arr[1][0] = 3;
arr[1][1] = 4;
arr[1][2] = 5;
다차원 배열은 아래와 같이 2개의 for loop로 출력할 수 있습니다.
for (int i = 0; i < arr.length; i++) {
for (int k = 0; k < arr[i].length; k++) {
System.out.println("int[" + i + "][" + k + "] = " + arr[i][k]);
}
}
아래 코드는 위에서 설명한 것처럼 2차원 배열을 선언하고 3가지 방법으로 출력하는 예제입니다.
출력하는 방법들 중에서 Arrays.deepToString()
라이브러리를 이용하면 반복문으로 출력하는 코드를 직접 구현할 필요가 없습니다.
import java.util.Arrays;
public class Example {
public static void main(String[] args) {
int[][] arr = new int[2][3];
arr[0][0] = 0;
arr[0][1] = 1;
arr[0][2] = 2;
arr[1][0] = 3;
arr[1][1] = 4;
arr[1][2] = 5;
System.out.println("# Output 1");
for (int i = 0; i < arr.length; i++) {
for (int k = 0; k < arr[i].length; k++) {
System.out.println("arr[" + i + "][" + k + "] = " + arr[i][k]);
}
}
System.out.println("# Output 2");
for (int i = 0; i < arr.length; i++) {
int[] innerArr = arr[i];
for (int k = 0; k < innerArr.length; k++) {
System.out.println("arr[" + i + "][" + k + "] = " + innerArr[k]);
}
}
System.out.println("# Output 3");
System.out.println(Arrays.deepToString(arr));
}
}
Output:
# Output 1
arr[0][0] = 0
arr[0][1] = 1
arr[0][2] = 2
arr[1][0] = 3
arr[1][1] = 4
arr[1][2] = 5
# Output 2
arr[0][0] = 0
arr[0][1] = 1
arr[0][2] = 2
arr[1][0] = 3
arr[1][1] = 4
arr[1][2] = 5
# Output 3
[[0, 1, 2], [3, 4, 5]]
2. 2차원 배열 선언과 동시에 초기화
다차원 배열을 선언과 동시에 값을 할당하려면 아래와 같이 선언하면 됩니다. 아래 예제는 2차원 배열 선언인데, { }
내부의 첫번째 { }
가 첫번째 행(row)의 1차원 배열이 되며, 두번째 { }
가 두번째 행(row)의 1차원 배열이 됩니다.
int[][] arr = { {0, 1, 2}, {3, 4, 5} };
위와 같이 2차원 배열을 선언하면 아래와 같은 값이 배열에 할당됩니다.
arr[0][0] = 0
arr[0][1] = 1
arr[0][2] = 2
arr[1][0] = 3
arr[1][1] = 4
arr[1][2] = 5
아래 코드는 2차원 배열을 선언과 동시에 할당하고 출력하는 예제입니다.
import java.util.Arrays;
public class Example1 {
public static void main(String[] args) {
int[][] arr = { {0, 1, 2}, {3, 4, 5} };
System.out.println(Arrays.deepToString(arr));
}
}
Output:
[[0, 1, 2], [3, 4, 5]]
3. 동적 배열(Dynamic array) : 배열의 길이가 다른 다차원 배열
위에서 소개한 2차원 배열 예제는, 모두 배열의 길이가 고정되어있었습니다.
배열의 열(Column)이 각각 다른 길이를 갖도록 하려면 어떻게 해야 할까요?
아래와 같이 배열의 Column만 먼저 입력하여 선언하고, 다른 길이의 배열을 만들어서 Row에 입력해주면 됩니다. 출력해보면 Row의 길이가 다른 다차원 배열이 생성된 것을 알 수 있습니다.
import java.util.Arrays;
public class Example2 {
public static void main(String[] args) {
int[][] arr = new int[3][];
arr[0] = new int[1];
arr[1] = new int[2];
arr[2] = new int[3];
arr[0][0] = 0;
arr[1][0] = 1;
arr[1][1] = 2;
arr[2][0] = 3;
arr[2][1] = 4;
arr[2][2] = 5;
System.out.println(Arrays.deepToString(arr));
}
}
Output:
[[0], [1, 2], [3, 4, 5]]
3.1 동적 배열의 선언과 동시에 초기화
동적 배열도 아래와 같이 선언과 동시에 초기화할 수 있습니다.
import java.util.Arrays;
public class Example3 {
public static void main(String[] args) {
int[][] arr = {{0}, {1, 2}, {3, 4, 5}};
System.out.println(Arrays.deepToString(arr));
}
}
Output:
[[0], [1, 2], [3, 4, 5]]
Related Posts
- Java - Unsupported class file major version 61 에러
- Java - String.matches()로 문자열 패턴 확인 및 다양한 예제 소개
- Java - 문자열 공백제거 (trim, replace)
- Java - replace()와 replaceAll()의 차이점
- Java - ArrayList 초기화, 4가지 방법
- Java - 배열 정렬(Sorting) (오름차순, 내림차순)
- Java - 문자열(String)을 비교하는 방법 (==, equals, compare)
- Java - StringBuilder 사용 방법, 예제
- Java - 로그 출력, 파일 저장 방법 (Logger 라이브러리)
- Java IllegalArgumentException 의미, 발생 이유
- Java - NullPointerException 원인, 해결 방법
- Seleninum의 ConnectionFailedException: Unable to establish websocket connection 해결
- Java - compareTo(), 객체 크기 비교
- Java - BufferedWriter로 파일 쓰기
- Java - BufferedReader로 파일 읽기
- Java charAt() 함수 알아보기
- Java - BigInteger 범위, 비교, 연산, 형변환
- Java contains()로 문자(대소문자 X) 포함 확인
- Java - Set(HashSet)를 배열로 변환
- Java - 문자열 첫번째 문자, 마지막 문자 확인
- Java - 문자열 한글자씩 자르기
- Java - 문자열 단어 개수 가져오기
- Java - 1초마다 반복 실행
- Java - 배열을 Set(HashSet)로 변환
- Java - 여러 Set(HashSet) 합치기
- Java - 명령행 인자 입력 받기
- Java - 리스트 역순으로 순회, 3가지 방법
- Java - 특정 조건으로 리스트 필터링, 3가지 방법
- Java - HashMap 모든 요소들의 합계, 평균 계산
- Java - 특정 조건으로 HashMap 필터링
- Java - 싱글톤(Singleton) 패턴 구현
- Java - 숫자 왼쪽에 0으로 채우기
- Java - String 배열 초기화 방법
- Java - 정렬된 순서로 Map(HashMap) 순회
- Java - HashMap에서 key, value 가져오기