“null”属于任何类型吗?

时间:2013-12-09 10:05:13

标签: java

下面的代码让我很困惑。输出是“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);
    }

}

1 个答案:

答案 0 :(得分:3)

null 一个对象,它是引用,请参阅JLS

  

还有一种特殊的null类型,表达式null的类型,   没有名字。因为null类型没有名称,所以不可能   声明null类型的变量或转换为null类型。   null引用是表达式null的唯一可能值   类型。 null引用始终可以转换为任何引用类型。在   实践中,程序员可以忽略null类型而只是假装   null只是一个特殊的文字,可以作任何参考   型