유난스런 개발 기록

[JAVA] Day-9 _ 2차원 배열 (TwoDimensionArray) 본문

개념정리/JAVA

[JAVA] Day-9 _ 2차원 배열 (TwoDimensionArray)

yourhwan 2023. 1. 19. 02:11

day-9

2차원 배열


2차원 배열 (TwoDimensionArray)이란?

  • 1차원 배열과 동일하지만 하나의 배열이 더 추가된 것이다.
  • 1차원 배열은 배열 첨자 '[]' 가 한번 나오지만 2차원 배열은 두번 나온다.
  • 배열 첨자 첫 번째는 배열의 가로줄(행)을, 두 번째는 세로줄(열)의 수를 의미한다.

 

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

// 2차원 배열 객체 할당
example = new int[n][n];

// 2차원 배열의 기본 형태, 변수 선언과 객체 할당을 동시에
int[][] exmaple = new[n][n];

 

위의 코드와 같이 2차원 배열을 선언할 수 있다. 

2차원 배열은 배열 속에 배열이 있는 것이기 때문에 1차원 배열을 이해했다면

어렵지 않게 이해할 수 있다.

 

수업 시간에 진행했던 실습 코드다.

package my.day10.a.multiDimension;

public class _3TwoDimensionArray_main {

	public static void main(String[] args) {
		
	
		
		// === 2차원 배열 ===
		int[][] pointArr = new int[4][]; // 4행 null열
/*
 		// 열의 크기를 설정하지 않았으므로 java.lang.NullPointerException 이 발생함.

		 pointArr[0][0] = 10;
		 pointArr[0][1] = 20;
		 pointArr[0][2] = 30;
		 
		 pointArr[1][0] = 40;
	//	 pointArr[1][1] = 50;
		 pointArr[1][2] = 60;
		 
	//	 pointArr[2][0] = 70;
	//	 pointArr[2][1] = 80;
	//   	 pointArr[2][2] = 90;
		 
		 pointArr[3][0] = 100;
		 pointArr[3][1] = 110;
		 pointArr[3][2] = 120;
*/		 
		
		pointArr[0] = new int[3]; // 0행은 3열로 설정함.		
		pointArr[1] = new int[2]; // 1행은 2열로 설정함.		
		pointArr[2] = new int[4]; // 2행은 4열로 설정함.		
		pointArr[3] = new int[3]; // 3행은 3열로 설정함.		
		
		pointArr[0][0] = 10;
		pointArr[0][1] = 20;
		pointArr[0][2] = 30;
		
		pointArr[1][0] = 40;
		pointArr[1][1] = 50;
	//	pointArr[1][2] = 60; // java.lang.ArrayIndexOutOfBoundsException: 발생함.
							 //왜냐하면 존재하지 않는 배열의 방에 넣어줬다는 의미다.
		pointArr[2][0] = 70;
	   	pointArr[2][1] = 80;
		pointArr[2][2] = 90; 
		pointArr[2][3] = 100; 
		
			/*
			     데이터값
			     -------------
			     | 0 | 0 | 0 | 
			     -------------
			     | 0 | 0 | 
			     ------------------
			     | 0 | 0 | 0 | 0 | 
			     ------------------
			     | 0 | 0 | 0 | 
			     -------------
			
			
			     index
			     ----------------------------
			     | [0][0] | [0][1] | [0][2] | 
			     ----------------------------
			     | [1][0] | [1][1] |
			     -----------------------------------
			     | [2][0] | [2][1] | [2][2] | [2][3]  
			     -----------------------------------
			     | [3][0] | [3][1] | [3][2] | 
			     ----------------------------
			     
			     데이터값
			     ----------------
			     | 10 | 20 | 30 | 
			     ----------------
			     | 40 | 50 | 
			     ----------------------
			     | 70 | 80 | 90 | 100 | 
			     ----------------------
			     | 0 | 0 | 0 | 
			     -------------
			 */
		
		
		for(int i=0; i<pointArr.length; i++) { // 행
			
			for(int j=0; j<pointArr[i].length; j++) { // 열
				String str_add = (j<pointArr[i].length-1)?"\t":"\n";
				System.out.printf("%3d%s", pointArr[i][j],str_add);
			}
			
		}// end of for-----------------------
		
		/*
		 	 10	 20	 30
			 40	 50
			 70	 80	 90	100
			  0	  0	  0
		 */
		
		System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~\n");
		
		int[][] numArr = {{10,20,30},
				 {40, 50},
				 {70,80,90,100},
				 {0,0,0}};
		

		for(int i=0; i<numArr.length; i++) { // 행
			
			for(int j=0; j<numArr[i].length; j++) { // 열
				String str_add = (j<numArr[i].length-1)?"\t":"\n";
				System.out.printf("%3d%s", numArr[i][j],str_add);
			}
			
		}// end of for-----------------------
		
		System.out.println("\n=== 프로그램 종료 ===");
		 

	}// end of main()----------------------------------

}