Java - 是`null`是`object`的一个实例?

时间:2010-12-16 10:20:49

标签: java

我认为null不是instanceof任何内容,但另一方面,Java中的一切扩展了Object类。

7 个答案:

答案 0 :(得分:56)

不,这是reference。 null不是对象

String s = null;

System.out.println(s instanceof Object); // false

答案 1 :(得分:8)

总之,没有。

Peter Norvig的Java IAQ详细解决了这个问题(具体是“Q: Is null an Object?”)

答案 2 :(得分:5)

  

还有一个特殊的null类型   表达式的类型为null,具有   无名。因为null类型没有   名字,不可能申报   null类型的变量或者要转换   到null类型。空引用   是唯一可能的价值   null类型的表达式。 null   引用总是可以转换为任何引用   参考类型。在实践中,   程序员可以忽略null类型   并假装null只是一个   可以是任何特殊文字   参考类型

Java Language Specification

答案 3 :(得分:3)

Null表示您没有对象的引用。

Object o = null;

o是一个引用,但没有引用对象,也没有为它分配内存。

o = new Object();

o仍然是一个引用,并保存对象在内存中的地址

答案 4 :(得分:2)

不,null不是对象。它是一个文字,意味着变量不引用任何对象。

答案 5 :(得分:1)

正如JLS所说,null属于null类型,而不是引用类型。然而,它可用于期望引用类型的值的情况下(该值在类型代数中实际上是“底部”)。

答案 6 :(得分:0)

希望这个例子清除你的怀疑:

public void printObject(Object object) {
    System.out.println("object referred");
}

public void printObject(double[] doubleArray) {
    System.out.println("Array of type double");
}

public static void main(String[] args) {
    JavaNullObjectTest javaNullObjectTest = new JavaNullObjectTest();

    javaNullObjectTest.printObject(null); //Array of type double

    javaNullObjectTest.printObject((Object)null); //object referred
}

我们可以,但是,将'null'转换为对象。