배열은 생각보다 단순하지 않아 - 배열 복습편.

이번 시간에는 배열에 관한 이야기를 다시 하고자 합니다.
이유는 배열 때문에 잠시 멍 때리고 있었던 것 때문에요 -_-;;

보통 프로그래밍을 한다 하면 기본적으로 배우는 문법들이 있지요.

그 중에서도 배열을 배우죠 ~

기본 예제로

int a[] = new int[3]; 이나 String a[] = new String a[3]; 이렇게 배열을 선언하는 방법을 쓰지요.

여기 까지는 아주 쉬운데 ~ 

복잡한 프로그래밍이나 좀 더 배열을 잘 이용하는 방법을 사용하게 될 때에는 여러가지로 응용을 하지요.

int a[] = new int[1];
이라면 a[0]에는 Integer 형의 값을 하나 저장이 가능하겠죠?

String a[] = new String[1];
이라면 a[0]에는 문자열의 값이 존재하는 주소를 기억하겠죠?

자, 여기까지는 뭐 별다른게 없지만 String 형에 주목을 잠깐 해봅시다.
주소를 기억한다는 것과 String는 자체가 클래스라는 점에 대해서 신경을 좀 써서 생각을 해봅시다.

위에서 생각해보자는 것에 대한 답은 배열은 클래스 형태로도 선언이 가능하다는 결론입니다.
이 단순한 답에 대해서 다들 무슨 뜻인지는 알지만 단순하게 생각한다면

자신이 만들어낸 클래스를 배열로 사용 할 수 있다 라는 사실에 잠시 패닉 상태를 초래 할지도 모르지요.

class Test
{
        String name;
        int number;
}

위와 같은 클래스가 존재 한다고 가정하고 설명하도록 하죠.

Test a[] = new Test[3]
이렇게 배열을 선언하면 어떠한 결과가 나올까요?

a[0]가 가리키는 주소로 가보면 두개의 변수가 존재하게 됩니다.
이해를 돕고자 좀 틀리게 설명을 한다면 a[0]는 두개의 변수를 저장이 가능하다. 라고 할수 있지요.

정확하게 말한다면 Test 라는 클래스에 2개의 변수가 존재 하는데 이 Test는 총 3개가 존재하고
그 중에 가장 빠른 주소값을 갖는 Test 클래스는 a[0] 배열에 그 주소가 들어 있다 라는 것이지요.

a[0]가 가리키는 주소가 001 이라면 001 번지로 가면 아래와 같이 변수들이 있다고 보시면 됩니다.

String name;

int number;


이것은 배열이 아니여도 충분히 가능하지요. 그냥 Test a = new test(); 이렇게 선언한다 해됴

a가 갖는 주소에 가보면 아래와 같이 변수들이 존재하는 것이지요.

String name;

int number;


실제로 이를 확인하는 방법은 System.out.print(a); 이렇게 해보시면 출력되는 값은
a가 갖고 있는 주소를 출력하게 됩니다.

그리고 배열을 가지고 이 이야기를 다시 한 것은 배열을 아주 단순하게만 이해하신 분을 위한 것입니다.

보통 배열을 배울 때 간단하게 배우기 때문에 배열은 1개의 값을 저장하는 공간이다.
그 1개의 값은 변수 값이다 라고만 생각을 하기 때문에 어떤 주소를 기억하고 있다고는 잊고 있을 수 있기 때문입니다.

그럼 다음 글에서 실습과제를 한 소스를 보기로 하죠. 주석도 달았으니 이해하기에 딱 좋은 예제 일 것입니다.

그럼 이만 ~
캄사합니다.

by 만성피로 | 2008/05/20 22:42 | 정리할 자료들 | 트랙백 | 덧글(1)

트랙백 주소 : http://maydaisy.egloos.com/tb/367799
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 김교수 at 2008/05/21 00:09
좀 더 정확을 기하기 위해서 부가 설명하면...
Test a[] = new Test[3];
라고 하고 a[0]에 가보면 값이 아무 것도 없습니다. 추가로
a[0]=new Test();라고 해야 비로소
a[0]에 Test객체를 가리키는 주소값이 들어갑니다.

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶