[Java]2차 배열과 for-each문

toget ㅣ 2023. 10. 3. 10:49

1차 배열은 하나의 []주소값에 하나의 값을 설정할 수 있습니다.

int[] number=new int[];

2차원 배열은 []주소값 마다 []배열을 설정한 것 입니다.

타입[][] 변수이름; = int[][] score;

타입 변수이름[][]; = int score[][];

타임[] 변수이름[]; = int[] score[];

 

2차원 배열의 예시
메모리는 직선의 형태이지만, 그림으로 나타낸다면, 아래와 같습니다.

4행x3열
      0        1         2
0 ㅣ[0][a] ㅣ [0][b] ㅣ [0][c]

1 ㅣ[1][a] ㅣ [1][b] ㅣ [1][c]

2 ㅣ[2][a] ㅣ [2][b] ㅣ [2][c]

3 ㅣ[3][a] ㅣ [3][b] ㅣ [3][c]

 

2차원 배열의 생성과 초기화

 

배열 선언 후 초기화

int[][] arr;
arr = new int[3][4];  // 3x4 크기의 int 2차원 배열을 생성. 모든 원소는 기본값 0으로 초기화됨.

 

선언과 동시에 new 키워드를 사용하여 초기화 (기본값으로 초기화)

int[][] arr = new int[3][4];  // 3x4 크기의 int 2차원 배열을 생성. 모든 원소는 기본값 0으로 초기화됨.

 

선언과 동시에 초기화

//모든 내부 배열의 길이가 동일한 경우, 3x4 크기의 int 2차원 배열을 생성하고 값으로 초기화.
int[][] arr = /*new int[][]생략*/{
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
}; 
//내부 배열의 길이가 다른 경우 1,2,3행의 길이가 다른 2차원 배열을 생성하고 값으로 초기화.
int[][] arr = /*new int[][]생략*/{
    {1, 2},
    {3, 4, 5, 6},
    {7, 8, 9}
};

 

for-each문을 활용한 2차 배열 표현

int[][] arr = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

for (int[] row : arr) {      // 각 행에 대해 반복
    for (int value : row) {  // 해당 행의 각 요소에 대해 반복
        System.out.print(value + " ");
    }
    System.out.println(); // 각 행이 끝나면 줄바꿈
}
//row는 arr의 각 행을 순회하기 위한 임시 변수
결과
1 2 3 4 
5 6 7 8 
9 10 11 12

 

가변배열

2차원 배열에서 2번째 배열[][i] ㅡ> [i]의 길이는 첫번째 배열 마다 다르게 설정할 수 있습니다.

int[][] jaggedArr=new int[3][];  
jaggedArr[0]=new int[] {1,2,3};  //첫번째 길이 3
jaggedArr[1]=new int[] {4,5};    //두번째 길이 2
jaggedArr[2]=new int[] {6,7,8,9};//세번째 길이 4

가변 2차 배열을 for문으로 출력 방법

for(int i = 0; i < jaggedArr.length; i++){
	for(int j = 0; j < jaggedArr[i].length; j++){
		System.out.print(jaggedArr[i][j]+" ");
 	}
    System.out.println();
}

가변 2차 배열을 for-each문으로 출력 방법

for (int[] row : jaggedArr) {  // 각 행에 대해 반복
    for (int value : row) {    // 해당 행의 각 요소에 대해 반복
        System.out.print(value + " ");
    }
    System.out.println();  // 한 행의 출력이 끝나면 줄바꿈
}