자바 2차원 배열
ocajp에는 2차월 배열 문제가 많이 나온다. 그래서 자바 2차원 배열에 관해 정확히 이해하고 가는게 좋다.
2차원 배열에 대해 알려드릴게요.
바로 이전 포스팅에서 보셨던 배열이
1차원 배열이에요.
2차원 배열은 값을 더 많이
효과적으로 담을 수 있어요.
이런 2차원 이상의 배열을 다차원 배열이라고 하는데
실질적으로 2차원 배열 이상으로는 잘 사용되지 않아요.
1차원과 2차원이 무엇이냐면
1차원 배열에서는 값을 1번만 담아요.
그런데 2차원 배열은 1차원 배열에
값을 더 담을 수 있어요.
예를 들어볼게요.
int[][] arr = new int[3][4];
3개의 배열 안에 각각 4개씩 더 담을 수 있는 거죠.
이것을 보기 쉽게 변경한다면
이런 형태가 돼요.
따라서 int[3][4]이면
3은 세로 길이, 4는 가로 길이를 의미하는 거죠.
1차원 배열과 마찬가지로 선언 시 []의 위치는
변수의 앞과 뒤에 자유롭게 올 수 있어요.
int[][] arr = new int[3][4];
int arr[][] = new int[3][4];
int []arr[] = new int[3][4];
위의 형태로 선언 가능하다는 것만 알아두세요 ^^
실제 사용은 첫 번째를 사용하시는 게 좋답니다~
2차원 배열의 초기화는 {}를 한번 더 묶어주시면 돼요.
int[][] arr = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
위의 초기화를 보시면
세로3, 가로 4줄로 이루어진 배열이라는 것도 알 수 있으실 거예요.
2차원 배열을 출력하고 싶을 때는
반복문을 두 번 쓸 수 있어요.
for(int i=0; i<arr.length; i++){
for(int j=0; j<arr[i].length; j++)
System.out.print(arr[i][j]+" ");
System.out.println("");
}
arr.length는 첫 번째 배열인 int[3]의 길이를 재고
arr[i].length는 각각의
arr[0], arr[1], arr[2]의 길이를 나타내요.
arr[0] 번째 줄의 길이는 4
arr[1] 번째 줄의 길이도 4
arr[2] 번째 줄의 길이도 4
또한 가로 길이가 일정하지 않게 할 수도 있어요.
일정하지 않은 배열을 'Ragged Array'이라고 하는데
어떻게 쓰이냐면
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = new int[4];
이렇게 가로 길이를 정하지 않고
아래에서 선언을 하기도 하고
선언과 동시에 초기화하기도 해요.
int[][] arr = {
{1, 2],
{3, 4, 5},
{6, 7, 8, 9}
};
이렇게 쓰여요.
이것은 필요하지 않은 메모리를 줄여서
효과적이지만
프로그래머의 세심한 주의가 필요해요.
출처: