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

Pas*_*cal -12 java equals

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

Fish fish;

fish.equals(null);
fish.equals(fish);
Run Code Online (Sandbox Code Playgroud)

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

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

Era*_*ran 8

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

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