본문 바로가기

Programming

배열 참조와 2차원 배열의 선언

반응형

배열 참조

 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