Java에서는 2차원 배열을 배열의 배열로 간주합니다. 즉, 2차원 배열은 특수한 1차원 배열이며, 2차원 배열의 각 요소는 1차원 배열입니다.
요소의 데이터 유형 [][] 배열 이름 = new 요소의 데이터 유형 [2차원 배열의 길이][1차원 배열의 길이];
int[][]arr=newint[3][2];
위의 상황은 3개의 1차원 배열이 있고, 각 1차원 배열에는 2개의 요소가 있음을 나타냅니다.
요소의 데이터 유형 [][] 배열 이름 = new 요소의 데이터 유형 [2차원 배열의 길이][];
int[][]arr=newint[3][];
위의 상황은 3개의 1차원 배열이 있지만 각 1차원 배열의 요소 개수는 불확실하며 각 1차원 배열의 요소 개수는 다를 수 있음을 나타냅니다.
요소의 데이터 유형 [][] 배열 이름 = {{요소 1, 요소 2,…}, {요소 1, 요소 2,…},…};
int[][]arr={{1,2,3},{4,5},{6,7,8,9}};
위의 상황은 3개의 1차원 배열이 3개의 요소를 갖고, 두 번째 1차원 배열이 2개의 요소를 갖고, 세 번째 1차원 배열이 4개의 요소를 가지고 있음을 나타냅니다. 1차원 배열은 다를 수 있습니다.
2차원 배열을 선언하는 데는 두 가지 형식이 있습니다.
배열 요소 유형 배열 이름[][];
array[][]의 요소 유형 배열 이름;
예를 들어:
charcat[][];char[][]cat;
2차원 배열의 초기화는 동일차원 배열의 초기화와 동일합니다. 동적 초기화와 정적 초기화의 두 가지 방법이 있습니다.
1) 먼저 선언한 다음 정적으로 초기화합니다.
요소 [][]의 데이터 유형 2차원 배열 이름 = 요소의 새 데이터 유형 [][]{{요소 1, 요소 2, 요소 3,...},{값 목록 두 번째 행}, …,{n행의 값 목록}};
2) 선언하는 동안 정적 초기화
요소의 데이터 유형 [][] 2차원 배열 이름 = new 요소의 데이터 유형 [][]{{요소 1, 요소 2, 요소 3,…},{두 번째 행의 값 목록},…,{nth 행 값 목록 }};
참고 : 오른쪽의 "새 요소 [][]의 데이터 유형"에 있는 "[][]"에는 행과 열의 수가 {}의 요소 수에 따라 결정되므로 숫자를 쓸 수 없습니다.
3) 선언과 동시에 정적 초기화의 단순화된 작성 방법
요소의 데이터 유형 [][] 2차원 배열 이름 = {{요소 1, 요소 2, 요소 3,…},{두 번째 행의 값 목록},…,{n 번째 행의 값 목록}};
예를 들어:
publicclassMain{publicstaticvoidmain(String[]args){int[][]arr={{1,2,3},{4,5},{6}};//배열 정의 System.out.println(arr[0 ][0]);//1System.out.println(arr[1][0]);//4System.out.println(arr[2][0]);//6System.out.println(arr[ 0][1]);//2System.out.println(arr[1][1]);//5System.out.println(arr[2][1]);//범위를 벗어남}}
동적 초기화 생성에서는 내부에 1차원 배열의 길이를 선언할 필요가 없습니다. 따라서 각 1차원 배열의 길이는 다를 수 있으므로 다음과 같은 두 가지 초기화 방법이 있습니다.
1) 동적 초기화 1: 규칙 2차원 테이블
프로그래머는 배열의 길이를 지정하고 나중에 값을 할당합니다. 일반 2차원 테이블은 각 행의 열 수가 동일하다는 것을 의미합니다. 일반적인 형식은 다음과 같습니다. 먼저 행 수와 열 수를 결정합니다.
요소 [][]의 데이터 유형 2차원 배열 이름 = 새 요소 [m][n]의 데이터 유형;
여기서 m은 이 2차원 배열에 몇 개의 1차원 배열이 있는지 또는 2차원 테이블에 몇 개의 행이 있는지를 나타내고, n은 각 1차원 배열에 몇 개의 요소가 있는지 또는 몇 개의 셀이 있는지를 나타냅니다. 각 행에 있습니다.
이 시점에서 배열이 생성되고 행과 열의 수가 결정되며 요소에 기본값이 지정됩니다. 그런 다음 요소에 새 값을 할당합니다.
2차원 배열명[행첨자][열첨자]=값;
예를 들어:
publicclassMain{publicstaticvoidmain(String[]args){int[][]arr=newint[3][2];/*2차원 배열 arr을 정의합니다. 이 2차원 배열에는 각각 3개의 1차원 배열 요소가 있습니다. -차원 배열 2개의 요소가 있습니다 */System.out.println(arr);//2차원 배열의 이름을 출력합니다 System.out.println(arr[0]);//첫 번째 요소의 이름을 출력합니다 2차원 배열의 이름과 1차원 배열의 이름 System.out.println(arr[0][0]);//2차원 배열의 요소를 출력}}
2) 동적 초기화 2: 불규칙한 2차원 테이블
불규칙한 2차원 테이블은 각 행의 열 수가 다를 수 있음을 의미합니다. 일반적인 형식은 먼저 총 행 수를 결정합니다.
요소의 데이터 유형 [][] 2차원 배열 이름 = 새 요소의 데이터 유형 [총 행 수][];
이때 전체 행 개수만 결정되며, 이제 각 행은 null이 됩니다. 그런 다음 각 행의 열 개수가 결정되고 각 행의 1차원 배열이 생성됩니다.
2차원 배열 이름 [행 아래 첨자] = 새 요소의 데이터 유형 [행의 총 열 수];
이때 new를 전달하는 행의 요소에는 기본값이 있고, new를 전달하지 않는 행에는 여전히 null 값이 할당됩니다.
2차원 배열명[행첨자][열첨자]=값;
참고 : 불규칙한 2차원 테이블은 선언 후 내부 1차원 배열을 초기화할 때 축약할 수 없습니다.
//불규칙한 2차원 테이블은 2차원 배열을 정의합니다. int[][]arr=newint[3][]; //3개의 행, 알 수 없는 열 //2차원 배열의 요소 값을 초기화합니다. arr[0]= newint[ ]{1};//arr[0]={1}arr[1]=newint[]{2,3};arr[2]=newint[]{4,5,6으로 축약할 수 없습니다. };
2차원 배열의 순회는 1차원 배열의 순회와 동일합니다. 차이점은 먼저 각 1차원 배열을 순회하려면 외부 루프가 필요하다는 것입니다.
for(inti=0;i<2차원 배열 이름.length;i++){for(intj=0;j<2차원 배열 이름[i].length;j++){System.out.print(two-Dimensional 배열 이름[ i][j]);}System.out.println();}