[java] 초기화되지 않은 개체와 NULL로 초기화 된 개체

저는 Java에서 일하고 있습니다.

나는 일반적으로 다음과 같은 일부 개체를 설정합니다.

public class Foo {
    private SomeObject someName;

    // do stuff

    public void someMethod() {
        if (this.someName != null) {
            // do some stuff
        }
    }
}

질문은 다음 someName과 같습니다.이 예제 null에서 reliably for all objectsNull 검사 초기화되지 않은 개체가 정확하다고 가정 할 수있는 것과 동일 합니까?



답변

정확합니다. 명시 적으로 초기화되지 않은 참조 유형의 정적 및 인스턴스 멤버는 모두 nullJava 에 의해 설정됩니다 . 동일한 규칙이 배열 구성원에 적용됩니다.

로부터 Java 언어 사양 , 섹션 4.12.5 :

변수의 초기 값

프로그램의 모든 변수에는 값이 사용되기 전에 값이 있어야합니다.

각 클래스 변수, 인스턴스 변수 또는 배열 구성 요소는 생성시 기본값으로 초기화됩니다.

[…] 모든 참조 유형의 기본값은 null입니다.

위의 규칙은 지역 변수를 제외합니다. 명시 적으로 초기화해야합니다. 그렇지 않으면 프로그램이 컴파일되지 않습니다.


답변

경우 Object참조가 선언되었지만 인스턴스화되었는지, 그 값입니다 null.


답변

namespace Design
     {
              class Program
              {

                static void Main(string[] args)
                {
                  Logger obj1;   // By Default, the value of obj1 is null
                  Logger obj2 = new Logger();  // By Default the value of obj2 is 
                                               // Design.Logger which is not null
                  Console.WriteLine(obj2);
                  Console.Read();
                }
              }

     class Logger
           {
             public Logger()
              {
                 Console.writeline("Called");
              }
            }
        }


답변