为什么Java在Java中没有指针时有“NullPointerException”?

2022-09-03 12:57:19

为什么我会得到一个名为NullPointerException的异常,如果在Java中没有指针这样的概念?


答案 1

Java中没有通用指针,您可以通过添加和减去任意值(如C)轻松操作。这可能会给那些不习惯的人带来各种各样的问题。

但是,Java仍然需要区分对象和“无对象”。它只是异常的名称,这意味着您正在尝试使用后面没有支持对象的对象引用。

你可以很容易地调用它或,或者无数其他名称之一,以尽量减少人们认为Java具有通用指针的可能性。NoObjectExceptionDereferenceException

但这是语言创建者选择的,可能是因为他们习惯于用C和/或C++编码。NullPointerException


答案 2

是的,这是我在学习Java LOL时学到的第一件令人讨厌的事情之一。它确实应该被称为NullReferenceException,NoObjectException或DereferenceException,正如paxdiablo所提到的。引用甚至不必在内部表示为指针,您也不必关心。“大多数虚拟机,包括Sun的使用句柄,而不是指针。句柄是指向指针的指针,所以谁知道他们是如何使用它的呢?”哦,微软的Java VM实际上确实使用指针而不是句柄,所以去图。