2-13 다차원 배열 및 실습 파트에서 이해가 안되는 부분이 있었다.
int[][] array = new int[2][3]; // 최초 선언
for (int i=0; i < array.length; i++) {
for (int j=0; j < array[i].length; j++) {
System.out.println("출력값 →" + i + ", " + j);
array[i][j] = 0; // i , j 는 노란색 네모박스 안에 있는 숫자를 의미하며 인덱스라고도 불림
출력값
출력값 →0, 0
출력값 →0, 1
출력값 →0, 2
출력값 →1, 0
출력값 →1, 1
출력값 →1, 2
이 과정에서 바깥쪽 for문은 new int[2]에 해당되는 부분 총 2번을 돌아가고, 안쪽 for문은 new int[3] 총 3번 돌아가게 된다고 한다. 이 내용이 해결이 안되어서 구글링을 해 보았다.
for 문 안에 for문이 있는 형태
바깥쪽의 i for문은 다음 반복으로 넘어가기 위해서 안쪽 j for문이 종료 되어야 i for문이 수행될 수 있다.
따라서 가장 안쪽에 있는 문장(i for문 반복횟수) * (j for문 반복횟수)만큼 수행되어야 한다.
무슨 말인지는 알겠지만, 코드에 어떻게 녹아있는 것인지 특히 j < array[i].length 이 문장이 이해가 안되어서 저녁에 친구한테 물어볼 참이다.
튜터님께 물어본 것을 정리해보려 한다.
2차원 배열의 length는 쉽게 생각하면 행의 갯수를 의미한다.
public class ArrayExam {
public static void main(String[] args) {
// 배열
String[][] arr = {
{ "A", "B", "C" },
{ "D", "E" },
{ "F", "G", "H", "I" }
};
// row 길이
System.out.println("arr length : " + arr.length);
// 각 row의 column 길이
System.out.println("1 번째 행의 원소 수 : " + arr[0].length);
System.out.println("2 번째 행의 원소 수 : " + arr[1].length);
System.out.println("3 번째 행의 원소 수 : " + arr[2].length);
}
}
결과
arr length : 3
1 번째 행의 원소 수 : 3
2 번째 행의 원소 수 : 2
3 번째 행의 원소 수 : 4
{0,0 0,1 0,2}
이후 하위 for문을 빠져나와 상위 for문에서 증감연산자로 0에서 1을 증가시킨 후 다시 하위 for문으로 들어간다.
마찬가지로 하위 for문을 3번 반복한다
{1,0 1,1 1,2}
이렇게 총 6개의 출력값이 나오게 된다