배열 참조
C에서 배열의 이름이 그 배열의 포인터를 가르키는 것과 같이 Java에는 배열의 이름이 참조값을 가진다.
그러므로 다음과 같이 사용하면 두개의 변수로 하나의 배열을 다룰수 있다.
int[] num = {1,2,3,4,5};
int[] num_1 = num;
int[] num_2 = num_1;
위의 세 변수 num, num_1, num_2는 모두 같은 참조값을 가지고 있기 때문에 하나의 배열이라고 볼수 있다.
만약 하나의 변수이름으로 값을 수정하게 되면 3개의 값이 다 바뀌는것 같을 것이다.
num_2[0] = 9;
for(i=0;i<num.length;i++)
System.out.println("num["+i+"] : "+num[i]+"\tnum_1["+i+"] : "+num_1[i]+"\tnum_2["+i+"] : "+num_2[i]);
위의 결과는 다음과 같다.
num[0] : 9 num_1[0] : 9 num_2[0] : 9
num[1] : 2 num_1[1] : 2 num_2[1] : 2
num[2] : 3 num_1[2] : 3 num_2[2] : 3
num[3] : 4 num_1[3] : 4 num_2[3] : 4
num[4] : 5 num_1[4] : 5 num_2[4] : 5
3개의 변수는 하나의 배열 참조값을 공유하고 있는것이다. 이것이 참조이며 반드시 데이터형은 같아야 한다.
public void copy(int[] A, int[] B)
{
for(int i=0;i<A.length;i++)
B[i] = A[i];
}
A와 B 모두 참조값을 받는다. 그러므로 A와 B를 변경하면 매개변수로 넘긴 배열도 변경된다. C언어 에서는 포인터를 사용해야할 이런일이 아주 쉽게 된다.
2차원 배열 선언
1차원 배열 선언과 거의 같다.
int[][] num = new int[2][3];
int[][] num_1 = new int[2][3] {{1,2,3}, {4,5,6}, {7,8,9}};
int[][] num_2 = {{1,2,3}, {4,5,6}, {7,8,9}};
'Programming' 카테고리의 다른 글
UpCasting & DownCasting (3) | 2009.03.30 |
---|---|
점근적 표기 (0) | 2009.03.29 |
배열 선언, 복사 (0) | 2009.03.24 |
퀵정렬(quick sort) (0) | 2009.03.19 |
오버로딩(overloading) 와 오버라이딩(overriding) (0) | 2009.03.18 |