未初始化的对象与对象初始化为NULL

时间:2013-05-22 18:57:20

标签: java null initialization

我在Java工作。

我通常会设置一些对象:

public class Foo {
    private SomeObject someName;

    // do stuff

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

问题是:此示例中的someName是否等同于null,因为我可以reliably for all objects假设空检查未初始化的对象是否准确?

3 个答案:

答案 0 :(得分:101)

正确,未显式初始化的引用类型的静态和实例成员都由Java设置为null。同样的规则适用于数组成员。

来自Java Language Specification,第4.12.5节:

  

变量的初始值

     

程序中的每个变量在使用其值之前必须具有值:

     

使用a初始化每个类变量,实例变量或数组组件   创建时的默认值

     

[...]对于所有参考类型,默认值为null

请注意,上述规则排除了局部变量:必须显式初始化它们,否则程序将无法编译。

答案 1 :(得分:13)

如果已声明Object引用但未实例化,则其值为null

答案 2 :(得分:0)

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");
              }   
            }
        }