2차원 배열 (23.04.26)

·2023년 4월 26일
0

Java

목록 보기
15/35
post-thumbnail

📝 배열


💡 2차원 배열

자료형이 같은 1차원 배열을 묶음으로 다루는 것
-> 행, 열 개념 추가

  • 1차원 배열: 변수를 묶음으로 다루는 것

✏️ 2차원 배열 선언

자료형[ ][ ] 배열명 ; 
자료형 배열명[ ][ ] ;
자료형[ ] 배열명[ ] ;

✏️ 2차원 배열 할당

new 자료형[행크기][열크기] ;
  • [예시 1]

		// 2차원 배열 선언
		int[][] arr;
		// int 2차원 배열을 참조하는 참조 변수 선언
		// (참조형 == 참조 변수 == 레퍼런스 변수 == 레퍼런스)
		
		// 2차원 배열 할당
		// -> new 자료형[행크기][열크기]
		
		arr = new int[2][3];
		// heap 영역에 int 2차원 배열 2행 3열 공간을 할당
		
		// 2차원 배열 초기화
		
		// 1) 행, 열 인덱스를 이용해서 직접 초기화
		/*
		arr[0][0] = 10;
		arr[0][1] = 20;
		arr[0][2] = 30;
		
		arr[1][0] = 40;
		arr[1][1] = 50;
		arr[1][2] = 60;
		*/
		
		// 2) 2중 for문을 이용한 초기화
		
		int num = 10; // 배열 요소 초기화에 사용할 변수
		
		
		// * 배열 길이
		// -> 배열명.length는 변수가 직접 참조하고 있는 배열의 길이 반환
		
		
		System.out.println(arr.length); // 2 (행의 길이)
		// arr이 참조하고 있는 2차원 배열의 행의 길이
		
		System.out.println(arr[0].length); // 3 (열의 길이)
		// arr[0] 행이 참조하고 있는 1차원 배열(열)의 길이
		
		for(int row = 0; row < arr.length; row++) { // 행 반복(0,1)
			
			for(int col = 0; col < arr[row].length; col++) { // 열 반복(0,1,2)
				
				arr[row][col] = num;
				num += 10; // 10씩 증가
			}
			
		}
		
		// Arrays.toString(배열명) : 참조하고 있는 1차원 배열 값을 문자열로 반환
		System.out.println(Arrays.toString(arr));
		
		// Arrays.deepToString(배열명)
		// - 참조하고 있는 배열의 데이터가 나오는 부분까지 파고 들어가서
		// 	 모든 값을 문자열로 반환
		System.out.println(Arrays.deepToString(arr));
  • [결과]

  • [예시 2]
		// 2차원 배열 선언과 동시에 초기화
		
		// 3행 3열짜리 정수형 2차원 배열 선언과 동시에
		// 1~9까지 초기화
		
		int[][] arr = { {1, 2, 3},
						{4, 5, 6},
						{7, 8, 9} };
		
		// 행 별로 합 출력
		for(int row = 0; row < arr.length; row++) { // 행 반복
			int sum = 0;
			
			for(int col = 0; col < arr[row].length; col++) { // 열 반복
				
				sum += arr[row][col]; // 현재 행의 모든 열 값을 누적
			}
			System.out.printf("%d행의 합 : %d\n", row, sum);
		}
		
		System.out.println("-------------------------------------");
		
		// 열 별로 합 출력
		// -> 열부터 지정 후 각 행의 값을 누적
		// --> 완전한 사각형의 형태를 지닌 2차원 배열은
		// 	   모든 열의 길이가 같다.

		
		for(int col = 0; col < arr[0].length; col++) { // 열 반복
			int sum = 0;
			
			for(int row = 0; row < arr.length; row++) { // 행 반복
				
				sum += arr[row][col];
					//      0    0
				    //      1    0
					//		2	 0
			}
			System.out.printf("%d열의 합 : %d\n", col, sum);
		}
		
		System.out.println("-------------------------------------");
		
		// 전체 합 출력
		
		int sum = 0;
		for(int row = 0; row < arr.length; row++) { // 행 반복
			
			for(int col = 0; col < arr[row].length; col++) { // 열 반복
				
				sum += arr[row][col];
				
			}
		}
		
		System.out.println("전체 합 : " + sum);
  • 결과

profile
풀스택 개발자 기록집 📁

0개의 댓글