Null은 객체인가 아닌가? 2 이곳의 8.10에 있는 원문입니다.

8.10 null

When you create an object variable, remember that you are creating a reference to an object. Until you make the variable point to an object, the value of the variable is null. null is a special value in Java (and a Java keyword) that is used to mean “no object.”

The declaration Point blank; is equivalent to this initialization

    Point blank = null;

and is shown in the following state diagram:

The value null is represented by a dot with no arrow.

If you try to use a null object, either by accessing an instance variable or invoking a method, you will get a NullPointerException. The system will print an error message and terminate the program.

    Point blank = null;
    int x = blank.x;              // NullPointerException
    blank.translate (50, 50);     // NullPointerException

On the other hand, it is legal to pass a nullobject as an argument or receive one as a return value. In fact, it iscommon to do so, for example to represent an empty set or indicate anerror condition.

이렇게 나와있습니다.

import java.awt.Point;

public class NullTest {
   public static void main(String args[]){
       Point blank = null;
       int x = blank.x;            
       blank.translate (50, 50);    
를 실험해본 결과.. compile은 통과 되고 실행시 NullPointerException이 발생합니다.

결국.. null은 그냥 그 레퍼런스가 아무것도 가리키고 있지 않다는 것을 나타내고 이러한 비어있는.. 즉 아무것도 가리키고 있지 않은 레퍼런스에 뭐든 call을 하면(레퍼런스의 타입에 정의되어 있는 메소드나 변수) NullPointerException이 발생한다는 것으로 결론을 맺는것이 해피하고 맞는것 같습니다.

결국 제가 잘못 생각했던 것 같습니다. Null Object라는 단어를 Null 객체가 아니라 비어있는 객체라고 비어있는 레퍼런스라고 생각을 했어야 했는데 너무 제멋대로 받아들인 격이 되었군요. 디코더(대엽)님께서 지적해 주셔서 한번 더 살펴봤기에 망정이지 계속 잘못 생각하고 있을뻔했습니다. 감사합니다. 찬욱이랑 성일형도 썡큐요~