Java

Java, 다차원 배열이란(2차원 배열, 가변길이, 고정길이, 동적 할당, 정적 할당)

greenyellow-s 2024. 7. 10. 14:29
728x90
반응형

다차원 배열

2차원 이상의 배열을 의미하며, 배열 요소로 또 다른 배열을 가지는 배열을 말한다.

자바에서는 2차원 배열까지만 가능하다.

 

형식

 

고정길이

자료형[][] 배열명 = { {10, 20, 30 }, {40, 50, 60}};

 

자료형[][] 배열명;

배열명 = new 자료형[개수][개수];

 

가변길이

배열명을 선언하고 행의 개수만 지정한 후 열은 다양하게 크기를 잡을 수 있다.

 

자료형[][] 배열명;

배열명 = new 자료형[개수][];

배열명[0] = new 자료형[개수];

배열명[1] = new 자료형[개수];

배열명[2] = new 자료형[개수];

 

[ 예시 ] 

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

ar = new int[3][]; // 행 3개

ar[0] = new int[3]; // 0행에 열 크기를 3으로 하겠다. {{0,0,0}, { }, { }}

ar[1] = new int[1]; // 1행에 열 크기를 1으로 하겠다. {{ }, { 0 }, { }}

ar[2] = new int[2]; // 2행에 열 크기를 2으로 하겠다. {{ }, { }, {0,0}}

 

정적 할당(C언어)

 

1차원 배열

5 20 4 30

 

2차원 배열

1 5 0행
60 40 1행
8 25 2행

 

행으로 구분짓는다.

 

이 배열을 1차원 배열이 3개 있다고 봐도 무관하다.

 

0행  1행 2행 
1 5 60 40 8 25

 

[1][1] == 1행에 2번째 값 == 40

 

자바의 동적 할당

 

new로 동적 할당

 

자료형[][] 배열명;

배열명 = new 자료형[개수][개수];

 

 

행   
[0] ----- [0] [1] [2]
[1] ----- [0] [1] [2]
[2] ----- [0] [1] [2]
[3] ----- [0] [1] [2]

 

행은 열의 주소를 가지고 있다.

 

 

[예제]

package multiArray;

public class MultiArray01 {

	public static void main(String[] args) {
		int[][] ar;
		ar = new int[3][2];
		
		
		ar[0][0] = 10;
		ar[0][1] = 20;
		
		ar[1][0] = 30;
		ar[1][1] = 40;
		
		ar[2][0] = 50;
		ar[2][1] = 60;
	
		
		System.out.println("배열명 ar = "+ ar);
		for(int i=0; i<ar.length; i++) { // 헹 // 행마다 주소의 값을 갖는다.
			System.out.println("ar[" + i + "] = " + ar[i]);
			for(int j=0; j<2; j++) { // 열
				System.out.println("ar[" + i + "][" + j + "] = " + ar[i][j]);
				
			}
			System.out.println();
		}
	}

}

[실행결과]

배열명 ar = [[I@372f7a8d

ar[0] = [I@85ede7b

ar[0][0] = 10

ar[0][1] = 20

 

ar[1] = [I@7229724f

ar[1][0] = 30

ar[1][1] = 40

 

ar[2] = [I@4c873330

ar[2][0] = 50

ar[2][1] = 60

728x90
반응형