在最近的一个项目中追查了一些NullPointerException
后,我终于找到他们来自哪里,这让我感到惊讶。尽管我现在可以准确地描述它们来自哪里以及如何防止它们,但我仍然对这种行为如何在没有来自编译器或至少IDE的警告的情况下允许发生混淆。为什么我们可以一次实例化多个变量?
我浏览了一下Stack并做了一些相当广泛的使用Google,但是找不到任何关于此的文章。为了切入这个追逐,一些代码证明了这种奇怪的行为;
public class Test {
String what, why, where = "who knows?";
public static void main(String[] args) {
System.out.println("The 'what' String = " +new Test().what);
}
}
输出;
The 'what' String = null
这说明正确的输出,如果你申报并单独实例每个字符串,而是链接在一起这样使它们被实例化null
。那么,问题是为什么?如果这是标准行为,那么为什么编译器甚至允许我们以这种方式实例化String
对象?
'String what,why,where =“谁知道?” ;' 这是similer到 'String什么; 为什么; String where =“谁知道?”;' –
警告你什么?你声明了三个变量并初始化一个变量。并不罕见。 –