这是疏忽吗?或者它与JVM有关?
Java确实有指针 - 指针,你不能执行指针运算.
来自古老的JLS:
Java编程语言中有两种类型:基本类型(第4.2节)和引用类型(第4.3节).相应地,有两种数据值可以存储在变量中,作为参数传递,由方法返回,并在以下操作:原始值(§4.2)和参考值(§4.3).
而后来:
一个对象是一个类的实例或阵列.
引用值(通常只是引用)是指向这些对象的指针,以及一个特殊的空引用,它指的是没有对象.
(强调他们的)
所以,要解释一下,如果你写:
Object myObj = new Object();
然后myObj
是一个引用类型,它包含一个引用值,该引用值本身就是一个指向新创建的引用值Object
.
因此,如果设置myObj
为null
您正在设置参考值(也称为指针)null
.因此,当取消引用变量时,会合理地抛出NullPointerException.
别担心:这个话题以前一直在热烈讨论.