java

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ java ] in KIDS
글 쓴 이(By): hell (나누구야)
날 짜 (Date): 1997년10월09일(목) 22시08분24초 ROK
제 목(Title): 자바의 데이타형과 변수 (3)



 ------------------------------------------------------------------------------
 뉴스제공시각 : 02/01 00:00                   출처 : 마이크로 
 제목 : 자바프로그래밍[2]/자바의 데이터형과 변수 (3)
 -----------------------------------------------------------------------------

null값
C/C++에서는 포인터가 아무런 메모리를 가리키지 않는다는 것을  나타내기 위해 특
별히 NULL이라는 상수를 정의하여 이를 그 표식으로 삼는다. 자바의 참조형 변수가 
아무런 객체를 지칭하지 않을 경우에는  null이라는 특별히 정의된 
리터럴(literal)을 
사용한다. null을 값으로 가진 참조형 변수를 사용하여 메쏘드를 호출하려거나  
필드
에 접근하려고 시도하는 경우는 NullPointerException라는 예외가 발생한다. 예외처
리에 대해서는 이후 연재가 진행되면서 차차 다루겠다. 

배열
자바에서 배열(array)은 C/C++나 타 언어에 비해 조금 특이하다. 즉,  배열도 
하나의 
객체인 것이다. 그래서 배열도 몇가지 메쏘드와 필드를 가지고  있다. length라는 

드를 읽으면 배열의 길이를 알 수 있도록 되어 있다. 단, 이 필드는 읽을 수만 
있다. 
자바에서 배열을 가리키는 참조형 변수는 다음과 같이 선언한다.

class Point {
    public int x, y;
};
class Arrays {
    static int[] intArray = new int[10];
    static Point refArray[] = new Point[15];
    public static void main(String args[]) {
        System.out.println("length    of    intArray    :    "   + 
intArray.length);
        System.out.println("length    of    refArray    :    "   + 
refArray.length);
    }
}

위의 예제를 컴파일하여 실행시켜 보기 바란다. 결과는 다음과 같다.

monsky [ dynaxis{52} ~/tmp ] java Arrays
length of intArray : 10
length of refArray : 15       

위에서 intArray와 refArray라는 변수를 선언했는데 자세히 보면  알겠지만, 
'[]'의 위
치가 서로 다르다. C/C++ 취향으로 변수 이름 뒤에 '[]'를 쓰든지 자바 특유의 
취향대
로 형 이름의 바로 다음에 쓰든지 개인의 자유에  맡긴다. 하지만 되도록 자바 고유
의 취향에 익숙해질 것을 권한다. 
또 한 가지 자세히 봐야 할 것은  배열도 객체이기 때문에 참조형 변수만을 선언할 
수 있고, 'new'를 사용해서 힙에서 할당받아야 한다는 점이다.  그래서 형 이름 
다음
에 오는 '['과 ']' 사이에 배열의 크기를 표시하지 않는 것이다. 이와 같이 
자바에서 배
열은 완전히 동적으로 생성된다.
다음으로 잠시 refArray에 대해 짚고  넘어갈 것이 있다. 다음에 C++에서의  
배열과 
자바에서의 배열의 구조를 <그림 2>에 보였다. C++에서도 Point라는 클래스가 있다
고 가정하자. <그림 2>를 통해 구조적 차이점을 확실히 인지하기 바란다.

<그림 2> 자바와 C++의 배열 구조 차이  

Point refArray[15];
Point[] refArray = new Point[15];
refArray[1] = new Point();
refArray[8] = refArray[1];
refArray[9] = new Point();



refArray                         <C++의 경우 - 각각이 Point 객체들이다>

refArray

              Point 객체                 Point 객체
                            <자바의 경우>

배열의 배열
자바에서는 다차원 배열을 지원하지 않는다. 비슷하기는 하지만 실제로 다음과 
같은 
배열 선언은 배열의 배열로 구현된 것이다. <그림 3>을 보면 쉽게 알 수 있다.

<그림 3> 자바의 배열 선언 

int[][] twoDim = new int[5][5];
 
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.