Qua*_*Oat 12 java programming-languages
在许多示例代码中,我看到用空值实例化的变量,后来分配了更有意义的值.
我只是想知道为什么人们会这样做.我猜测try-catch块很可能会进入这个,但我也看到实例化的变量将在try块内部为null值.
(我确定这是一个相当语言不可知的问题,但仅供参考我几乎完全用Java编程)
所有见解都表示赞赏!
MFo*_*ter 13
在某些情况下,Java编译器会检测是否所有可能的控制流中都未初始化变量并输出错误.要避免这些错误消息,必须显式初始化变量.
例如,在这种情况下:
public Integer foo() {
Integer result;
if (Math.random() < 0.5) {
result = 1;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
编译器会给出以下错误消息:"本地变量结果可能尚未初始化".
以下是Java语言规范所说的内容:
当对其值进行任何访问时,每个局部变量(第14.4节)和每个空白最终(第4.5.4节)字段(第8.3.1.2节)必须具有明确赋值.Java编译器必须执行特定的保守流分析,以确保对于本地变量或空白最终字段f的每次访问,f在访问之前是明确分配的; 否则必须发生编译时错误.
请注意(与字段相反!)局部变量不会自动初始化为null.
| 归档时间: |
|
| 查看次数: |
3017 次 |
| 最近记录: |