배열의 배열
우리는 3년 동안 월 강수량을 데이터로 정리한다면 표로 정리 할 것이다.
하지만, 컴퓨터 메모리는 이러한 표를 이해할 수 없다. 따라서 인간이 이해할 수 있는 데이터를 컴퓨터가 이해할 수 있게 만든 자료구조를 2차원 배열이라고 한다.
배열의 원소가 배열인 배열이다. 즉 배열의 배열이다.
하나의 1차원 배열안에 각자 또 다른 배열의 주소값을 가지고 있는 있다.
2차원 배열 이상의 배열을 다차원 배열이라고 한다.

고정배열 생성하기
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
}
가변 배열을 출력하기