반응형
1. 다차원배열
전에 배웠던 배열은 1차원배열이다. 이번에 배울 배열은 다차원배열이다. 2차원배열은 수학의 행렬을 떠올리면 쉽다.
자바는 2차원 배열을 중첩 배열 방식으로 구현한다.
int [][] scores = new int [2][3]
이런 식으로 대괄호를 2번 넣어주면 2차원 배열을 생성하는 코드가 된다. 위에 코드를 실행시키면 3개의 배열의 객체를 생성된다.
위에 코드를 실행을 해보면 행이 2 ,열이 3인 2차원 배열인지 확인 할수 있다.
배열 한 칸이 비어있는 상황에서는 새롭게 인데스를 수정을 해서 배열을 생성할 수 가 있다. 그러나 이런 형태의 배열은 주의할 점이 있다. 배열의 정확한 길이를 알고 인덱스를 사용해야한다. 안그러면 ArrayIndexOutOfBoundsException을 발생시킨다. 이 의미는 배열의 인덱스가 없어서 발생하는 오류이다.
굳이 인덱스로 배열의 값을 넣지 않아도 직접 값을 배열에 저장시킬수 있다. int[][] scores 라는 배열을 생성해주고
중괄호를 써서 2차원 배열에 맞게 {{값1,값2},{값1,값2}} 으로 작성하면 인덱스는 똑같이 {{0,1},{0,1}}이 되는것이다.
예시)
public class ArrayInArray {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [][] mathScores = new int [2][3];
for(int i = 0; i<mathScores.length; i++) {
for(int k = 0; k<mathScores[i].length; k++) {
System.out.println("mathScores["+i+"]["+k+"]=" +mathScores[i][k]);
}
}
System.out.println();
int [][] englishScores = new int[2][];
englishScores[0] = new int [2];
englishScores[1] = new int [3];
for(int i=0; i<englishScores.length; i++) {
for(int k = 0; k<englishScores[i].length; k++) {
System.out.println("englishScores["+i+"]["+k +"]="+englishScores[i][k] );
}
}
System.out.println();
int[][] javaScores = {{67,43},{56,78,43}};
for(int i = 0; i<javaScores.length; i++) {
for(int k =0; k<javaScores[i].length; k++) {
System.out.println("javaScores["+i+"]["+k+"]=" + javaScores[i][k] );
}
}
}
}
반응형
'자바' 카테고리의 다른 글
[java] 배열(배열정의, 배열선언, 배열생성,배열길이) (0) | 2023.04.04 |
---|---|
[java] 참조타입과 참조변수 (0) | 2023.04.04 |
[java] 반복문 - for문, while문, do-while문 (0) | 2023.03.30 |
[java] 조건문 - if , switch (0) | 2023.03.30 |
[java] 연산자의 종류 (0) | 2023.03.30 |