3.1 2차원 배열의 선언과 인덱스(index), 초기화
2차원 배열의 선언은 1차원 배열과 같다. 다만 괄호[]가 하나 더 늘었다는 것.
① 선언, 생성, 초기화를 동시에
int[][] score = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
{10, 11, 12},
};
② 선언과 생성
int[][] score = new int[4][3]; //4행 3열짜리 2차원 배열을 생성한다. 단 생성은 했으나 초기화는 하지 않은 상태.
2차원 배열은 잘 살펴보면 행(row)과 열(column)로 구성되어 있다. 그림을 살펴보면 다음과 같다
new int[4][3]의 2차원 배열의 객체를 생성하여 초기화 시키면 위 그림과 같다.
그리고 만약 이러한 2차원 배열의 형태를 for문을 이용하여 초기화 할 땐 다음과 같은 형태로 초기화 한다(거의 모든 2차원 배열의for문 초기화는 형태가 비슷하니 공식처럼 알아주면 좋다)
for(int i=0; i<score.length; i++){
for(int j = 0; j<score[i].length; j++){
score[i][j] = n;
}
}
//2차원 배열 score의 모든 요소를 n으로 초기화한다.
3.2 가변 배열의 선언과 초기화
1) 가변 배열의 선언방법
int[][] score = new int[4][3] //기존의 배열생성 방법: 생성된 모든 배열의 길이가 동일.
int[][] score = new int[4][]; //가변 배열 생성: 생선된 배열의 길이가 각각 다르다.
score[0] = new int[4];
score[1] = new int[3];
score[2] = new int[2];
score[3] = new int[3];
2) 가변 배열의 생성과 초기화(위 그림)
int[][] score = {
{1, 2, 3, 4},
{5, 6, 7},
{8, 9},
{10, 11, 12},
};
score.length의 값은 4지만 score[i].length의 값은 서로 다르다는 것을 볼 수 있다.
4.1 Arrays클래스
1) 문자열의 비교와 출력 - equals(), toString()
public class arrays {
public static void main(String[] args) {
int[] arr = {0,1,2,3,4};
int[][] arr2D = {{11, 12}, {21, 22}};
//toString(): 1차원 배열의 값을 String 타입으로 출력
//deepToString(): 2차원 배열의 값을 String 타입으로 출력
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.deepToString(arr2D));
System.out.println("---------------------");
String[][] str2D = {{"aaa","bbb"},{"AAA","BBB"}};
String[][] str2D2 = {{"aaa","bbb"},{"AAA","BBB"}};
//Arrays.equals(): 1차원 배열의 문자열을 비교하여 값을 반환
//Arrays.deepEquals(): 2차원 배열의 문자열을 비교하여 값을 반환
System.out.println(Arrays.equals(str2D, str2D2)); //2차원 배열이기 때문에 false
System.out.println(Arrays.deepEquals(str2D, str2D2)); //2차원 배열의 값이 같아서 true
}
}
2) 배열의 복사 - copyOf(), copyOfRange()
//copyOf(var, index.length): 해당 배열 변수의 요수갯수를 출력
//copyOfRange(var, index1, index2): 배열변수의 index1부터 index2미만의 범위의 값 출력
int[] arr = {0,1,2,3,4};
int[] arr2 = Arrays.copyOf(arr, arr.length);
int[] arr3 = Arrays.copyOf(arr ,3);
int[] arr4 = Arrays.copyOf(arr, 7); //범위를 초과하면 0으로 출력
int[] arr5 = Arrays.copyOfRange(arr, 2, 4);
int[] arr6 = Arrays.copyOfRange(arr, 2, 7); //범위를 초과하면 0으로 출력
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arr2));
System.out.println(Arrays.toString(arr3));
System.out.println(Arrays.toString(arr4));
System.out.println(Arrays.toString(arr5));
System.out.println(Arrays.toString(arr6));
------------------------------------------
[실행 결과]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 1, 2]
[0, 1, 2, 3, 4, 0, 0]
[2, 3]
[2, 3, 4, 0, 0]
'Java > Basic' 카테고리의 다른 글
JVM의 메모리 구조 (0) | 2021.03.19 |
---|---|
객체지향 (0) | 2021.03.03 |
String 배열 (0) | 2021.02.23 |
배열(Array) (0) | 2021.02.21 |
반복문(for, while, do-while) (0) | 2021.02.20 |
댓글