什么是空?

null是任何东西的实例吗?

null属于哪个集合?

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


当前回答

Java中的Null (tm)

在C和c++中,"NULL"是头文件中定义的常量,其值如下:

    0

or:

    0L

or:

    ((void*)0)

取决于编译器和内存模型选项。严格地说,NULL不是C/ c++本身的一部分。

在Java(tm)中,“null”不是关键字,而是null类型的特殊文字。它可以强制转换为任何引用类型,但不能转换为任何基本类型,如int或boolean。null字面量的值不一定是0。并且不可能强制转换为null类型或声明该类型的变量。

其他回答

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

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

简短准确的回答,正式回答您的所有问题:

3.10.7. 空文字 空类型有一个值,即空引用,由 null literal null,由ASCII字符组成。 空字面值总是null类型。

只有赋值为null类型的引用才会被分配。您不需要为引用分配任何值(对象)。 这样的分配取决于JVM将占用多少引用以及将在哪个内存区域分配引用。

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

String x = null;

在本例中,初始化语句声明了一个变量“x”。" x "存储字符串引用。这里是空的。首先,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);