min's devlog

다차원 배열 본문

til/Java

다차원 배열

값진 2022. 4. 26. 18:30

다차원 배열

  - 배열의 논리적 메모리 구조가 2차원 이상의 형태를 보이는 배열

  - 일차원 배열만으로는 표현할 수 있는 것의 한계가 생긴다.

 

private static void m1() {
		
		//1차원 배열
		int[] nums1 = new int[3];
		
		//2차원 배열(테이블)
		int[][] nums2 = new int[2][3]; //2(행), 3(열)
		
		//3차원 배열
		int[][][] nums3 = new int[2][2][3]; //2(면), 2(행), 3(열)
		
		//배열 요소 접근(방번호 매기기)
		//1차원 배열
		nums1[0] = 100;
		nums1[1] = 200;
		nums1[2] = 300;
		
		//2차원 배열 > 차원 2개 > 첨자 2개
		nums2[0][0] = 100;
		nums2[0][1] = 200;
		nums2[0][2] = 300;
		nums2[1][0] = 400;
		nums2[1][1] = 500;
		nums2[1][2] = 600;
		
		//3차원 배열 > 차원 3개 > 첨자 3개
		nums3[0][0][0] = 100;
		nums3[0][0][1] = 200;
		nums3[0][0][2] = 300;
		
		nums3[0][1][0] = 400;
		nums3[0][1][1] = 500;
		nums3[0][1][2] = 600;
		
		nums3[1][0][0] = 700;
		nums3[1][0][1] = 800;
		nums3[1][0][2] = 900;
		
		nums3[1][1][0] = 1000;
		nums3[1][1][1] = 1100;
		nums3[1][1][2] = 1200;
		
		//배열 탐색(+조작)
		//- 1차원 배열 > 단일 for문
		//- 2차원 배열 > 2중 for문
		//- 3차원 배열 > 3중 for문
		
		//1차원 배열
		for (int i=0; i<nums1.length; i++) {
			System.out.printf("nums1[%d] = %d\n", i, nums1[i]);
		}
		System.out.println();
		
		for (int i=0; i<nums1.length; i++) {
			System.out.printf("%5d", nums1[i]);
		}
		System.out.println();
		System.out.println();
	
		
		//2차원 배열
		for (int i=0; i<2; i++) {
			for (int j=0; j<3; j++) {
				System.out.printf("nums2[%d][%d] = %d\n", i, j, nums2[i][j]);
			}
		}
		System.out.println();
		
		
		for (int i=0; i<nums2.length; i++) {
			for (int j=0; j<nums2[0].length; j++) {
				System.out.printf("%5d", nums2[i][j]);
			}
			System.out.println();
		}
		System.out.println();
		System.out.println();
		
		
		
		//3차원 배열
		for (int i=0; i<2; i++) {
			for (int j=0; j<2; j++) {
				for (int k=0; k<3; k++) {
					
					System.out.printf("nums3[%d][%d][%d] = %d\n", i, j, k, nums3[i][j][k]);
					
				}
			}
		}
		System.out.println();
		
		
		
		for (int i=0; i<nums3.length; i++) {
			for (int j=0; j<nums3[0].length; j++) {
				for (int k=0; k<nums3[0][0].length; k++) {
					
					System.out.printf("%5d", nums3[i][j][k]);
					
				}
				System.out.println(); //행
			}
			System.out.println();//면
		}
		System.out.println();
		
		
		//다차원 배열의 길이(= 방 개수)
		//1차원 배열
		//= new int[3];
		System.out.println(nums1.length);
		System.out.println();
		
		//2차원 배열
		//= new int[2][3]
		System.out.println(nums2.length); //행의 개수
		System.out.println(nums2[0].length); //열의 개수
		System.out.println();
		
		//3차원 배열
		//= new int[2][2][3]
		System.out.println(nums3.length); //면의 개수
		System.out.println(nums3[0].length); //행의 개수
		System.out.println(nums3[0][0].length); //열의 개수
		System.out.println();
		
	}

}

 

다차원 배열의 초기화

	private static void m2() {
		
		//다차원 배열의 초기화 리스트
		int[] nums1 = { 10, 20, 30 };
		
		//2차원 배열
		//= new int[2][3]
		int[][] nums2 = {{ 10, 20, 30 }, { 40, 50, 60 }};
		
		//3차원 배열
		//= new int[2][2][3];
		int[][][] nums3 = {{{ 10, 20, 30 }, { 40, 50, 60 }}, {{ 10, 20, 30 }, { 40, 50, 60 }}};
		
		int[][][] nums4 = 
			{
				{
					{ 10, 20, 30 }, 
					{ 40, 50, 60 }
				}, 
				{
					{ 10, 20, 30 }, 
					{ 40, 50, 60 }
				}
			};
		
		
		
	}

'til > Java' 카테고리의 다른 글

Java 컴파일 과정  (0) 2022.07.28
제네릭(generic)  (0) 2022.04.27
인터페이스(interface)  (0) 2022.04.26
추상 클래스(abstract class)  (0) 2022.04.24
메소드 오버라이딩(method overriding)  (0) 2022.04.23
Comments