我看到过null
不是任何实例的instanceof
,但是另一方面,在Java中所有类都继承自Object
类。
不是,它是一个引用
。null不是一个对象。
String s = null;
System.out.println(s instanceof Object); // false
String s = "";
引用了一个内部内容为空的 String 对象(一个 char 数组)。另一方面,String s = null
没有引用任何东西。 - Hudson Pena Magalhães总之,不行。
Peter Norvig的Java IAQ详细讨论了这个问题(具体来说是"Q: Is null an Object?")
还有一种特殊的空类型,即表达式 null 的类型,它没有名称。由于 null 类型没有名称,因此无法声明 null 类型的变量或将其强制转换为 null 类型。null 引用是 null 类型表达式的唯一可能值。null 引用始终可以转换为任何引用类型。在实践中,程序员可以忽略 null 类型,只需假装 null 只是一个可以是任何引用类型的特殊字面量。
Null表示您没有对对象的引用。
Object o = null;
o是一个引用,但是没有对象被引用,也没有为它分配内存。
o = new Object();
o仍然是一个引用,它保存了对象在内存中的地址
null
不是一个对象。它是一个字面量,意味着变量没有引用任何对象。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'转换为对象。
int
、bool
等)不是Object
的子类型。 - Donal Fellows