본문 바로가기

프로그래밍/Java

[Java]2차원 배열

2차원 배열이란

 2차원 배열은 우리가 앞서 배웠던 1차원 배열에서 한 단계 업그레이드된 배열이다.

 1차원 배열에서는 한줄에 원하는 값을 담았었는데,  2차원 배열은 그 줄을 겹겹이 쌓는 행렬의 구조를 가진다. 때문에 1차원 배열보다 인데스 좌표를 찾는데 다소 헷갈릴 수가 있다.

 

2차원 배열 선언 및 초기화

// 2차원 배열 선언
int[][] array;

// 2차원 배열 초기화
array = new int[2][5]; // 2행 5열을 가지는 2차원 배열 초기화

 

2차원 배열 선언과 초기화를 동시에 하는 방법

// 2차원 배열 선언과 동시에 초기화
int[][] array = new int[1][5]; //1행 5열을 가지는 2차원 배열

 위와 같은 방식으로 2차원 배열을 선언, 초기화 하면 int형, 즉 정수형이기 때문에 기본값으로 0을 가지게 된다.

그렇다면 1차원 배열처럼 선언, 초기화와 동시에 값까지 세팅하는 방법은 없을까?

 

 

2차원 배열 선언과 초기화, 기본값 세팅까지 동시 하는 방법

//선언,초기화와 값세팅까지 한번에

	//index    0  1  2    index
int[][] array = { {1, 2, 3}, // 0
		    {4, 5, 6}  // 1
                 };

이렇게 2차원 배열을 선언하게 되면

array[0][0] = 1  array[0][1] = 2  array[0][2] = 3

array[1][0] = 4  array[1][1] = 5  array[1][2] = 6 의 값을 가지게 된다. 

 

가변크기의 2차원 배열을 생성하는 방법

가변크기의 2차원 배열을 생성할때 행은 개수는 꼭 정해놓아야한다.

열의 개수는 추후에 생성 함으로서 가변적으로 크기를 정할 수 있다.

// 가변크기의 2차원 배열을 생성하는 방법

 int[][] array = new int[3][];
//위와같이 선언하면 array는 3개의 행을 가지고, 행마다의 열은 아직 정해지지 않은 상태이다(= 가변크기 상태).

 array[0] = new int[1]; //첫번째 행에 정수를 하나 담을 수 있는 열을 생성한다. 
 array[1] = new int[2]; //두번째 행에 정수를 두개 담을 수 있는 열을 생성한다.  
 array[2] = new int[3]; //세번째 행에 정수를 세개 담을 수 있는 열을 생성한다.

이렇게 2차원 배열을 선언하게 되면

 

array[0][0]

array[1][0]  array[1][1]

array[2][0]  array[2][1]  array[2][2] 의 구조를 가지게 된다.

 

 

2차원 배열에서 행과 열의 개수를 알아내는 방법

 행의 개수 알아내는 방법 : 참조변수명.length

 열의 개수 알아내는 방법 : 참조변수명[행인덱스의 위치].length

 

2차원 배열 출력

public class Main {

	public static void main(String[] args) {
				
		int[][] array = { {1, 2, 3},
				    {4, 5, 6}
						};
		
		System.out.println(array[0][0]);
		System.out.println(array[0][1]);
		System.out.println(array[0][2]);
		System.out.println(array[1][0]);
		System.out.println(array[1][1]);
		System.out.println(array[1][2]);
		
		System.out.println("----------------------------------");
		
		System.out.println(array.length);    // 2차원 배열 행길이 출력
		System.out.println(array[0].length); // 2차원 배열 0번째 인덱스 행의 열길이 출력

	}
}

출력 결과

'프로그래밍 > Java' 카테고리의 다른 글

[Java]객체 배열  (0) 2021.03.19
[Java]클래스와 객체  (0) 2021.03.17
[Java] 향상된 for문  (0) 2021.03.12
[Java]배열  (0) 2021.03.11
[Java]Method  (0) 2021.03.09