在 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("内容不相等");
}
相关推荐
稚南城才子,乌衣巷风流2 小时前
函数:编程中的核心概念
开发语言·前端·javascript
阿米亚波3 小时前
【C++】流式数据输入处理(不完全整理)
开发语言·c++·笔记
大模型码小白3 小时前
JAVA 集合框架进阶:List 与 Set 的深度解析与实战
java·开发语言·人工智能·windows·语言模型·list·ai编程
名字还没想好☜4 小时前
Go 的 time.Ticker 陷阱:定时任务里被忽略的内存泄漏与正确关闭
java·数据库·golang·go·定时器
皓月斯语4 小时前
【C++基础】三目运算符
开发语言·数据结构·c++
音符犹如代码4 小时前
后端视角看 EventBus:发布订阅总线的原理、场景与用法
java·spring boot·guava
前端炒粉4 小时前
手撕小汇总
java·前端·javascript
初願致夕霞4 小时前
C++懒汉单例设计详解
服务器·开发语言·c++
脱胎换骨-军哥5 小时前
C++分布式系统设计:从通信引擎到分布式共识
开发语言·c++·分布式
唐青枫5 小时前
Java Kafka 实战指南:从 Topic、分区到 Spring Boot 可靠消息处理
java