在 Java 中判断两个对象是否一致

在 Java 中判断两个对象是否一致,取决于您对"一致"的定义。以下是一些常见的判断方式:

  1. 如果对象是基本数据类型(如 intdoubleboolean 等)或者基本数据类型的包装类(如 IntegerDoubleBoolean 等),可以直接使用 == 运算符比较值是否相等。
java 复制代码
Integer num1 = 10;
Integer num2 = 10;

if (num1 == num2) {
    System.out.println("相等");
} else {
    System.out.println("不相等");
}

需要注意的是,对于 Integer-128127 范围内的值,使用 == 比较会直接比较值,超出这个范围则比较引用,可能会出现不一致的结果。

  1. 如果是自定义的类对象,默认情况下使用 == 比较的是两个对象的引用是否指向同一个对象
java 复制代码
class MyClass {
    int value;

    MyClass(int value) {
        this.value = value;
    }
}

MyClass obj1 = new MyClass(10);
MyClass obj2 = new MyClass(10);

if (obj1 == obj2) {
    System.out.println("相等");
} else {
    System.out.println("不相等");
}

在上述代码中,obj1obj2 是两个不同的对象,尽管它们的属性值相同,使用 == 比较结果为"不相等"

  1. 如果要比较自定义类对象的内容是否相等,您需要在类中重写 equals() 方法和 hashCode() 方法
java 复制代码
class MyClass {
    int value;

    MyClass(int value) {
        this.value = value;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass()!= obj.getClass()) return false;
        MyClass myClass = (MyClass) obj;
        return value == myClass.value;
    }

    @Override
    public int hashCode() {
        return Objects.hash(value);
    }
}

MyClass obj1 = new MyClass(10);
MyClass obj2 = new MyClass(10);

if (obj1.equals(obj2)) {
    System.out.println("内容相等");
} else {
    System.out.println("内容不相等");
}
相关推荐
@HNUSTer9 分钟前
Python数据可视化科技图表绘制系列教程(七)
python·数据可视化·科技论文·专业制图·科研图表
shizidushu10 分钟前
How to work with merged cells in Excel with `openpyxl` in Python?
python·microsoft·excel·openpyxl
eqwaak015 分钟前
科技信息差(9.13)
大数据·开发语言·人工智能·华为·语言模型
郝学胜-神的一滴19 分钟前
深入探索 Python 元组:从基础到高级应用
运维·服务器·开发语言·python·程序人生
一只乔哇噻22 分钟前
java后端工程师进修ing(研一版‖day44)
java·开发语言·学习·算法
技术程序猿华锋26 分钟前
深度解码OpenAI的2025野心:Codex重生与GPT-5 APIKey获取调用示例
人工智能·vscode·python·gpt·深度学习·编辑器
老华带你飞29 分钟前
畅阅读小程序|畅阅读系统|基于java的畅阅读系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序·毕设·畅阅读系统小程序
Ares-Wang41 分钟前
Vue3》》eslint Prettier husky
开发语言·javascript·ecmascript
EveryPossible1 小时前
静态箭头连线
开发语言·javascript·ecmascript
NiKo_W1 小时前
Git 版本回退与撤销修改
开发语言·git·安全