배열의 배열

우리는 3년 동안 월 강수량을 데이터로 정리한다면 표로 정리 할 것이다.

하지만, 컴퓨터 메모리는 이러한 표를 이해할 수 없다. 따라서 인간이 이해할 수 있는 데이터를 컴퓨터가 이해할 수 있게 만든 자료구조를 2차원 배열이라고 한다.

배열의 원소가 배열인 배열이다. 즉 배열의 배열이다.

하나의 1차원 배열안에 각자 또 다른 배열의 주소값을 가지고 있는 있다.

2차원 배열 이상의 배열을 다차원 배열이라고 한다.

stack11.jpg

배열의 생성

고정배열 생성하기

int[ ][ ]arr =new int[ ][ ]{ { 1,2,3 },{4,5,6  } };
int[ ][ ]arr={ { 1,2,3 },{4,5,6  } };

가변 배열 생성하기

1차원 배열의 자료의 수가 가변 배열인 경우도 있다.

int[ ][ ]arr =new int[ ][ ]{ {  1,2 }, {3,4,5,6  } };

배열에 접근 하기

개별 인덱스를 통한 배열에 접근

1차원배열의 주소값(arr[0]과 2차원 배열의 주소값이 다른 이유는 자바의 배열 저장형식이 c언어와 다르게 객체로 취급하기 때문이다.

package com.java.array02;

public class Array01 {

	public static void main(String[] args) {
		// 다차원 배열(2차 이상의 배열)>2차원 배열
		//배열의 배열(실제 데이터)
		
	//	int [] arr= {1,2,3,4,5};  1차원 배열
		
		int[][] arr = new int [][]{
									   {1,2,3},  //첫번째 배열의 이름(주소값,0x00ffee):arr[0]
									   {4,5,6},  //두번째 배열의 이름:arr[1]
									   {7,8,9}   //세번째 배열의 이름:arr[2]
								  };
			
			//1.배열의 접근
			System.out.println(arr); //[[I@2a139a55
			System.out.println(arr[0]);//[I@15db9742
			System.out.println(arr[1]);//[I@6d06d69c
			System.out.println(arr[2]);//[I@6d06d69c
			
			//첫번째 배열 arr[0]의 각요소
			    System.out.print(arr[0][0]);
			    System.out.print(arr[0][1]);
			    System.out.print(arr[0][2]);
			    System.out.println();
			    
			  //두번째 배열 arr[1]의 각요소
			    System.out.print(arr[1][0]);
			    System.out.print(arr[1][1]);
			    System.out.print(arr[1][2]);
			    System.out.println();
			    
			  //세번째 배열 arr[2]의 각요소
			    System.out.print(arr[2][0]);
			    System.out.print(arr[2][1]);
			    System.out.print(arr[2][2]);
			    System.out.println();
					
		
	}

}

for문을 통하여 배열에 접근하기

package com.java.array02;

import java.util.Scanner;

public class Array02 {

	public static void main(String[] args) {
		// for문을 통한 2차원 배열의 접근

		int[][] arr = new int[3][3];

		// 중첩 for문을 통한 입력
		System.out.println("배열의 값을 입력하세요");

		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {

				Scanner scan = new Scanner(System.in);
				System.out.print((i + 1) + "번째 배열의" + (j + 1) + "의 요소");
				arr[i][j] = scan.nextInt();
			}
		}

		// 중첩 for문을 통한 출력
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				System.out.print((i + 1) + "번째 배열의" + (j + 1) + "의 요소");
				System.out.println("arr[" + i + "][" + j + "]=" + arr[i][j]);

			}
		}

	}// main

}

가변 배열을 출력하기