在Java中,有什么区别和最佳方法?
Integer x = null; // x later assign some value.
Integer y; // y later initialize and use it.
Run Code Online (Sandbox Code Playgroud)
答案取决于您所指的变量类型.
对于类变量,没有区别,请参阅JLS - 4.12.5.变量的初始值:
...程序中的每个变量在使用其值之前必须具有值:
对于所有引用类型(§4.3),默认值为
null.
意思是没有区别,后者是隐式设置的null.
如果变量是本地变量,则必须先将它们分配,然后再将它们传递给方法:
myMethod(x); //will compile :)
myMethod(y) //won't compile :(
Run Code Online (Sandbox Code Playgroud)
局部变量在使用之前必须先赋值。
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对于对象类型,例如对于基元而言为零)。局部变量不会隐式初始化。