非初始化和初始化为null之间有什么区别?

Ric*_*d H 18 java initialization

我有这个代码:

MyClass object;

.... some code here where object may or may not be initialised...

if (object.getId > 0) {
    ....
}
Run Code Online (Sandbox Code Playgroud)

这导致编译错误:object可能尚未初始化,这是公平的.

现在我将我的代码更改为:

MyClass object;

.... some conditional code here where object may or may not be initialised...

if (object != null && object.getId > 0) {
     ....
}
Run Code Online (Sandbox Code Playgroud)

我得到相同的编译错误!我必须初始化object为null:

MyClass object = null;
Run Code Online (Sandbox Code Playgroud)

那么,不初始化对象和初始化为null之间的区别是什么?如果我声明一个没有初始化的对象,那么它不是null吗?

谢谢

Boz*_*zho 27

  • 字段(成员变量)被初始化为null(或者是默认的原始值,如果它们是基元)
  • 局部变量未初始化,您负责设置初始值.

  • @Richard:null绝对是一个值.它是不涉及任何对象的值."未明确分配"和"明确分配,值为null"之间存在差异. (5认同)