![](/img/trans.png)
[英]Accessing Scala Variable: 'not found value: variable_name' Issue
[英]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;
因为两者都会导致myClass1
为null
。
就方法变量而言,有很大的不同。 即使变量为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.