
Java确实有指针-无法在其上执行指针算术的指针。
从古老的JLS:
Java编程语言中有两种类型:基本类型(第4.2节)和引用类型(第4.3节)。相应地,可以将两种数据值存储在变量中,作为参数传递,由方法返回并对其进行操作:原始值(第4.2节)和引用值(第4.3节)。
而后来:
一个 对象 是一个 类的实例 或 阵列 。
引用值(通常只是 reference )是 指向 这些对象的 指针 ,还有一个特殊的null引用,它不引用任何对象。
(强调他们的)
因此,要解释一下,如果您写:
Object myObj = new Object();
然后
myObj是一个 引用类型 ,该 引用类型 包含一个 引用值 ,该 引用值 本身就是 指向 新创建的的
Object。
因此,如果设置
myObj为
null,则会将 参考值 (也称为 指针
null。因此,在取消引用变量时会合理地引发NullPointerException。
不用担心:这个话题之前已经经过激烈的辩论。