什么是空?
null是任何东西的实例吗?
null属于哪个集合?
它在内存中是如何表示的?
什么是空?
null是任何东西的实例吗?
null属于哪个集合?
它在内存中是如何表示的?
当前回答
什么是空?
这没什么。
null是任何东西的实例吗?
不,因为它什么也不是,它不可能是任何事物的实例。
null属于哪个集合?
没有任何集合
它在内存中是如何表示的?
如果一些参考指向它,比如:
Object o=new Object();
在堆内存中,分配给新创建对象的空间。o指向内存中指定的空间。
现在 o=null;
这意味着现在o不再指向对象的内存空间。
其他回答
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);
null关键字是一个表示空引用的文字,它不引用任何对象。Null是引用类型变量的默认值。
也可以看看
null: Java术语
什么是空?
这没什么。
null是任何东西的实例吗?
不,因为它什么也不是,它不可能是任何事物的实例。
null属于哪个集合?
没有任何集合
它在内存中是如何表示的?
如果一些参考指向它,比如:
Object o=new Object();
在堆内存中,分配给新创建对象的空间。o指向内存中指定的空间。
现在 o=null;
这意味着现在o不再指向对象的内存空间。
字节码表示
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是一个特殊值,它不是任何类的实例。下面的程序说明了这一点:
public class X {
void f(Object o)
{
System.out.println(o instanceof String); // Output is "false"
}
public static void main(String[] args) {
new X().f(null);
}
}