对象是null吗?

时间:2009-12-12 17:41:26

标签: java null

Java中是否为Object

14 个答案:

答案 0 :(得分:161)

如果null是Object,它将支持java.lang.Object的方法,例如equals()。但是,情况并非如此 - 对null的任何方法调用都会产生NullPointerException

这就是Java Language Specification对此主题所说的话:

  

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

我认为这可归结为“null is special”。

答案 1 :(得分:30)

根据Java specnull是一种可以分配给对象变量的类型(作为注释中注明的值)。但是,您无法实例化或创建此类型的变量,您必须使用编译器提供的文字null

答案 2 :(得分:27)

绝对不是:null instanceof Object返回false。

答案 3 :(得分:12)

不,这不是一个对象。

答案 4 :(得分:11)

Null是缺少对象。

答案 5 :(得分:9)

不,它不是Class的实例,也不是Class的实例。这是对任何事物的引用。

修改:尚未阅读规范,因此上述内容可能不是100%准确。

答案 6 :(得分:4)

不,不是一个对象,因为null instanceof对象总是返回false也只有一个null,而不是每个类一个。

答案 7 :(得分:4)

如Java语言规范的4.1 The Kinds of Types and Values一章所述, null是一个具有一个值的类型,空引用(由文字null表示):

  

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

您可能想要了解 Null对象模式(我不建议)。有关此模式的详情,请参阅C2 WikiWikipedia

答案 8 :(得分:4)

根据Java Spec

  

还有一个特殊的空文字   可以用作任何值的值   参考类型。可以分配null   到任何变量,除了变量   原始类型。你没什么   可以使用null值   测试它的存在。因此,   null经常在程序中用作   标记表示某个对象是   不可用。

答案 9 :(得分:4)

没有。即使它是它,它也没用,因为它没有任何方法或领域。

答案 10 :(得分:4)

Java通过引用处理对象。 Null是Java的OO-ness细分,因为它会使你低于OO级别。不,它不是一个对象,它是一个引用的值。它与对象范例无关,但与启用对象的Java管道有关。

答案 11 :(得分:3)

null是java.lang.Object的实例吗?没有。

对象是null吗?取决于“”的定义。

答案 12 :(得分:2)

Object foo = null;
System.out.println(foo.toString()); 

第一行显示null可以分配到Object类型,但第二行会证明它肯定不是Object,最终会产生java.lang.NullPointerException < / p>

答案 13 :(得分:1)

不,null不是对象。它是一个引用类型,它的值不引用任何对象,因此内存中没有null的表示。