繁体   English   中英

ClassType variable_name = null和ClassType variable_name之间的混淆很小;

[英]Little confusion between ClassType variable_name =null And ClassType variable_name;

引用可以使用创建

Class_Name Var_Name;
Class_Name Var_Name=null;

我知道在这两种情况下,Var_Name都分配了null值。 为引用分配空值(使引用无效)仅仅是一个好的编码标准,还是为空值分配逻辑或优点?

这不仅仅是一个好的编码。

您必须使用Java初始化变量。 对于类的字段,您不必这样做,但实际上它们被初始化为null。

对于局部变量,您不能使用未初始化的变量,如下所示:

String n;
n.length()

还发现了类似的问题: 未初始化的变量

好吧,如果上面的声明处于实例级别,则明确分配null是多余的,因为实例变量获取其默认值。 但是对于局部变量,应在使用变量之前对其进行初始化,否则会出现编译器错误

将字段初始化为0-false-null是多余的。

将字段显式设置为0,false或null(视情况而定)是不必要且多余的。 由于包含此语言功能是为了部分减少重复编码,因此充分利用它是一个好主意。 坚持将字段显式初始化为0,false或null是一种习惯用法,这很可能不适合Java编程语言

对于类字段,根本没有区别。 创建类的实例时,未明确初始化的字段将使用该类型的默认值进行初始化。 对于对象,默认值为null 所以:

private MyClass myClass1;

相当于

private MyClass myClass1 = null;

因为两者都会导致myClass1null

就方法变量而言,有很大的不同。 即使变量为null ,变量也必须声明一个值,否则,当您以后尝试使用它时,会出现(潜在)编译器错误。 做这样的事情:

public void myMethod() {
    MyClass myClass1;

    if(someCondition)
        myClass1 = new MyClass();

    myClass1.doSomething();
}

将是无效的,因为编译器无法保证myClass1将具有值。 将该行更改为MyClass myClass1 = null; 将是有效的,尽管在实践中,如果someCondition不为真,您可能会遇到运行时错误( NullPointerException )。

您可以执行以下操作:

MyClass myClass1;

// calculate some values

myClass1 = new MyClass(arg1, arg2, ...);

但这对我来说似乎毫无意义; 在实例化它之前, myClass1提及myClass1 而是做:

// calculate some values

MyClass myClass1 = new MyClass(arg1, arg2, ...);

取决于您的用例。

对于变量级别的变量,如果不分配空值,则在给变量赋值之前使用变量会出现编译器错误。


对于类级别的变量,这只是多余的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM