我们假设我们有这个示例代码:
Fish fish;
fish.equals(null);
fish.equals(fish);
equals方法还没有被覆盖,而且fish变量还没有初始化,这意味着java将无效吗?
两条线都会返回true吗? 为什么会这样呢?在未初始化对象时是否也可以使用类变量?
答案 0 :(得分:8)
如果fish
是局部变量,则此代码不会通过编译,因为必须初始化fish
。
如果fish
是一个实例变量,则此代码将抛出NullPointerException,因为默认值fish
将为null,并且取消引用空引用会抛出此异常。
答案 1 :(得分:2)
在语句Fish fish;
之后,fish
将为null
;即它不是指一个物体。
执行fish.equals(null);
时会出现空指针异常,因为fish
本身就是null
,因此equals
将无法使用。