局部变量初始化null和不初始化之间的区别?

Dam*_*oda 9 java

在Java中,有什么区别和最佳方法?

Integer x = null; // x later assign some value.
Integer y; // y later initialize and use it.
Run Code Online (Sandbox Code Playgroud)

Mar*_*oun 8

答案取决于您所指的变量类型.

对于类变量,没有区别,请参阅JLS - 4.12.5.变量的初始值:

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

对于所有引用类型(§4.3),默认值为null.

意思是没有区别,后者是隐式设置的null.

如果变量是本地变量,则必须先将它们分配,然后再将它们传递给方法:

myMethod(x); //will compile :)
myMethod(y)  //won't compile :(
Run Code Online (Sandbox Code Playgroud)


khe*_*ood 5

局部变量在使用之前必须先赋值。

Integer x = null;
myFunction(x);
// myFunction is called with the argument null

Integer y;
myFunction(y);
// This will not compile because the variable has not been initialised
Run Code Online (Sandbox Code Playgroud)

如果您没有显式初始化类变量,则它们始终会初始化为默认值(null对于对象类型,例如对于基元而言为零)。局部变量不会隐式初始化。