x.equals(x)和x.equals(null)

时间:2015-06-22 09:51:54

标签: java equals

我们假设我们有这个示例代码:

Fish fish;

fish.equals(null);
fish.equals(fish);

equals方法还没有被覆盖,而且fish变量还没有初始化,这意味着java将无效吗?

两条线都会返回true吗? 为什么会这样呢?在未初始化对象时是否也可以使用类变量?

2 个答案:

答案 0 :(得分:8)

如果fish是局部变量,则此代码不会通过编译,因为必须初始化fish

如果fish是一个实例变量,则此代码将抛出NullPointerException,因为默认值fish将为null,并且取消引用空引用会抛出此异常。

答案 1 :(得分:2)

在语句Fish fish;之后,fish将为null;即它不是指一个物体。

执行fish.equals(null);时会出现空指针异常,因为fish本身就是null,因此equals将无法使用。