马库斯·莱昂:
对于此Java代码:
String var;
clazz.doSomething(var);
为什么编译器报告此错误:
变量“ var”可能尚未初始化
我认为所有变量或引用都已初始化为null
。为什么需要这样做:
String var = null;
??
迈克尔·迈尔斯(Michael Myers):
实例和类变量初始化为null(或0),但局部变量不初始化。
有关非常详细的说明,请参见JLS的§4.12.5,该说明基本上是相同的:
程序中的每个变量在使用值之前都必须具有一个值:
- 每个类变量,实例变量或数组组件在创建时均使用默认值初始化:
- 每个方法参数都初始化为该方法的调用者提供的相应参数值。
- 每个构造函数参数都初始化为由类实例创建表达式或显式构造函数调用提供的相应参数值。
- 将异常处理程序参数初始化为表示异常的引发对象。
- 在使用局部变量之前,必须通过初始化或赋值为局部变量显式地赋予一个值,该方式可以由编译器使用确定赋值规则进行验证。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
编辑于
我来说两句