下面的代码让我很困惑。输出是“int array”,但是如果我引用第二个Confusing函数,输出将是“Obejct”。我想知道null在Java中的含义是什么。
还有为什么创建Confusing类时调用第二个构造函数而不是第一个构造函数
为什么编译器会调用该构造函数,因为它总是调用类的最低扩展名
public class Confusing {
public Confusing(Object o){
System.out.println("Obejct");
if(o instanceof Object)
System.out.println("Object");
}
public Confusing(int[] iArray){
System.out.println("int array");
if(iArray instanceof int[])
System.out.println("Array");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Confusing(null);
}
}
答案 0 :(得分:3)
null
不一个对象,它是引用,请参阅JLS:
还有一种特殊的
null
类型,表达式null
的类型, 没有名字。因为null
类型没有名称,所以不可能 声明null
类型的变量或转换为null
类型。null
引用是表达式null
的唯一可能值 类型。null
引用始终可以转换为任何引用类型。在 实践中,程序员可以忽略null
类型而只是假装null
只是一个特殊的文字,可以作任何参考 型