[ 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]; |