You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java对象引用用==比较返回false?move(0,0)返回值比较异常排查

问题根因

Java中==运算符对引用类型做比较时,校验的是两个对象是否指向同一块内存地址,而非对象的属性值是否相等。你的代码在入参均为0的分支中,仍然通过new Point(x, y)创建了全新的Point对象,该对象和调用move方法的原Point对象(即测试代码中的p)是完全独立的两个实例,内存地址完全不同,因此p == moved的断言结果为false。
另外你现有代码还存在语法问题:p2 = p行末尾缺少分号,会在编译阶段直接报错,不过这不是断言失败的核心诱因。

修复方案

只需要在入参均为0时,直接返回当前对象本身(this关键字指向当前调用move方法的实例)即可满足需求,修复后的代码如下:

public Point move(int xSteps, int ySteps) {
    if (xSteps == 0 && ySteps == 0) {
        return this;
    }
    return new Point(x + xSteps, y + ySteps);
}

修复后调用move(0,0)返回的就是原对象本身,p == moved的断言就会返回true。

内容的提问来源于stack exchange,提问作者Zaid Fanek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:36:04