什么是空?

null是任何东西的实例吗?

null属于哪个集合?

它在内存中是如何表示的?


当前回答

不,它不是任何东西的实例,instanceof总是false。

其他回答

Java中有两大类类型:基本类型和引用类型。声明为基元类型的变量存储值;声明为引用类型的变量存储引用。

String x = null;

在本例中,初始化语句声明了一个变量“x”。" x "存储字符串引用。这里是空的。首先,null不是一个有效的对象实例,因此没有为它分配内存。它只是一个值,指示对象引用当前没有引用对象。

Null是一个特殊值,它不是任何东西的实例。很明显,它不能是任何东西的实例。

null关键字是一个表示空引用的文字,它不引用任何对象。Null是引用类型变量的默认值。

也可以看看

null: Java术语

字节码表示

Java的null有直接的JVM支持:使用三个指令来实现它:

aconst_null:例如,将一个变量设置为null,如Object o = null; Ifnull和ifnonnull:例如,if (o == null)将对象与null进行比较

第6章“Java虚拟机指令集”接着提到了null对其他指令的影响:它会对许多指令抛出NullPointerException异常。

2.4. “引用类型和值”在通用术语中也提到了null:

引用值也可以是特殊的空引用,即不指向任何对象的引用,这里用null表示。空引用最初没有运行时类型,但可以转换为任何类型。引用类型的默认值是null。

Null不是任何类的实例。

然而,你可以将null赋值给任何类型的变量(对象或数组):

 // this is false   
 boolean nope = (null instanceof String);

 // but you can still use it as a String
 String x = null;
 "abc".startsWith(null);