Reference Type의 이해가 바탕이 됨. 자바에서 primitive를 제외한 모든 유형의 데이터는 참조변수를 활용한다. 참조변수는 그 자체가 본체가 아니라, 참조하는 대상을 바꿀 수 있다.
예시)
s1 과 s2 둘다 비어있어 같아 보이지만, s1은 참조하는 대상 자체가 없는것이고, s2는 참조하는 대상이 있지만 내용이 없다.
String 의 내용이 같은지 판별하는 .equals() 같은 경우 .왼쪽에는 null이 위치 하게 되면 null point Exception이 발생하게 된다. 그러므로 비교시에는 무조건 .왼쪽의 null이 위치 하지 않도록 주의 해야 한다.
이중 배열 생성은 [][]를 두번 사용하여 만든다.
예시)
arr = new int[5][5]; // 모든값은 0으로 초기화 된 5행 5열의 이중 배열을 생성한다.
int[] arr1 = { 1, 2, 3, 4, 5 };
int[] arr2 = { 6, 7, 8, 9, 10 };
int[] arr3 = { 11, 12, 13, 14, 15 };
int[] arr4 = { 16, 17, 18, 19, 20 };
int[] arr5 = { 21, 22, 23, 24, 25 };
int[][] arr = { arr1, arr2, arr3, arr4, arr5 };
arr[0][0] = 1
arr[1][2] = 8
배열 이므로 인덱싱을 이용해서 배열안의 값을 저장하거나 불러 오기도 가능하다.
배열의 인덱스들의 번호를 묶어서 규치적인 모양으로 출력 하는 것도 가능하다.
예시)
int[][] arr = new int[5][5];
int num = 0;
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
arr[i][j] = ++num;
}
}
배열의 요소들을 차례로 출력시
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
모양으로 출력이 된다.
같은 방식으로
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
arr[i][j] = i * 5 + j + 1;
}
}
num 이라는 변수를 사용하지 않고, 인덱스 번호를 사용하여 규칙적인 증가 값을 구 할 수 있다.
지그재그 방식으로 출력하기
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
int tmp = i % 2 == 0 ? j + 1 : 5 - j;
arr[i][j] = i * 5 + tmp;
}
}
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25 모양으로 출력이 된다.
세로로 지그 재그 모양으로 출력하는 코드
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
int tmp = i % 2 == 0 ? j + 1 : 5 - j;
arr[j][i] = i * 5 + tmp;
}
}
1 10 11 20 21
2 9 12 19 22
3 8 13 18 23
4 7 14 17 24
5 6 15 16 25
위에서 아래로 또 아래에서 위로 움직이는 듯한 모습으로 출력이 된다.