可以使用
创建参考Class_Name Var_Name;
Class_Name Var_Name=null;
我知道在两种情况下都会为Var_Name分配空值。 它是一个很好的编码标准,为引用分配null(使引用无效),或者是否有任何分配null的逻辑或优势。
答案 0 :(得分:2)
这不仅仅是一个很好的编码。
您必须在Java中初始化变量。对于类的字段,您不必这样做,但实际上它们被初始化为null。
对于局部变量,您不能使用这样的未初始化变量:
String n;
n.length()
还发现了类似的问题:uninitialized vars
答案 1 :(得分:2)
好吧,如果上面的声明是在实例级别,那么显式分配null是多余的,因为实例变量获得它们的默认值。但是对于局部变量,您应该在使用之前初始化varible,否则会出现编译器错误
答案 2 :(得分:1)
将字段初始化为0-false-null
是多余的。
将字段显式设置为0,false或null(视情况而定)是不必要且多余的。由于包含此语言功能以部分减少重复编码,因此充分利用它是一个好主意。坚持将字段显式初始化为0,false或null是一种习惯用法,可能不适合Java programming language。
答案 3 :(得分:1)
在类字段的情况下,根本没有区别。在创建类的实例时,使用该类型的默认值初始化未显式初始化的字段;对于对象,默认值为null
。所以:
private MyClass myClass1;
相当于
private MyClass myClass1 = null;
因为两者都会导致myClass1
为null
。
在方法变量的情况下,存在相当大的差异。变量必须声明一个值,即使它是null
,否则当你以后尝试使用它时,你会得到(潜在的)编译器错误。做这样的事情:
public void myMethod() {
MyClass myClass1;
if(someCondition)
myClass1 = new MyClass();
myClass1.doSomething();
}
将无效,因为编译器无法保证myClass1
将具有值。将该行更改为MyClass myClass1 = null;
将是有效的,但在实践中,如果NullPointerException
不成立,则可能会出现运行时错误(someCondition
)。
你可以这样做:
MyClass myClass1;
// calculate some values
myClass1 = new MyClass(arg1, arg2, ...);
但这对我来说似乎毫无意义;在您实例化之前,不需要提及myClass1
。而只是做:
// calculate some values
MyClass myClass1 = new MyClass(arg1, arg2, ...);
答案 4 :(得分:0)
取决于您的使用案例。
对于变量级变量,如果不指定null,如果在为其赋值之前使用该变量,则会出现编译器错误。
对于班级变量,它只是多余的。