Я читал, что null
не является instanceof
чем угодно, но, с другой стороны, все в Java расширяет класс Object
.
Java - это `null` экземпляр` object`?
Ответ 1
Нет, это reference
. null не является объектом
String s = null;
System.out.println(s instanceof Object); // false
Ответ 2
Одним словом, нет.
Peter Norvig Java IAQ подробно рассматривает этот вопрос (в частности, Q: Является ли null объектом? ")
Ответ 3
Существует также специальный нулевой тип, тип выражения null, который имеет без имени. Поскольку нулевой тип не имеет имя, невозможно объявить переменная нулевого типа или к нулевому типу. Нулевая ссылка является единственным возможным значением выражение нулевого типа. Нулевой ссылка всегда может быть передана любому ссылочный тип. На практике программист может игнорировать нулевой тип и просто притворяйтесь, что null - это просто специальный литерал, который может быть любого ссылочный тип
Ответ 4
Нуль означает, что у вас нет ссылки на объект.
Object o = null;
o является ссылкой, но нет ссылки на объект и не выделяется память для него.
o = new Object();
o по-прежнему является ссылкой и содержит адрес, где объект находится в памяти
Ответ 5
Нет, null
не является объектом. Это литерал, который означает, что переменная не ссылается ни на какой объект.
Ответ 6
Как показывает JLS, null
имеет нулевой тип и не является ссылочным типом. Однако он может использоваться в ситуациях, когда ожидается значение ссылочного типа (значение действительно является "дном" в алгебре типов).
Ответ 7
Надеясь, что этот пример очистит ваши сомнения:
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' в объект.