Java 确实有指针——不能对其执行指针算术的指针。
来自尊者JLS http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.1:
Java 编程语言中有两种类型:基本类型(第 4.2 节)和引用类型(第 4.3 节)。相应地,有两种数据值可以存储在变量中、作为参数传递、由方法返回并进行操作:原始值(第 4.2 节)和引用值(第 4.3 节)。
And later http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.3.1:
An object is a 类实例 or an array.
参考值(通常只是参考) are pointers这些对象,以及一个特殊的空引用,它不引用任何对象。
(强调他们的)
因此,解释一下,如果你写:
Object myObj = new Object();
then myObj
is a 参考类型其中包含一个参考值这本身就是一个pointer到新创建的Object
.
因此如果你设置myObj
to null
你正在设置参考值 (aka pointer) to null
。因此,当变量被取消引用时,会合理地抛出 NullPointerException。
别担心:这个话题已经热烈辩论 http://groups.google.com/group/comp.lang.java.programmer/browse_thread/thread/65bf7e9d6bffb1b9/ before.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)