gpt4 book ai didi

java - 如何判断一个对象是同一个还是不同的

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:19:11 24 4
gpt4 key购买 nike

我知道 this.toString() 不打印对象的地址,而是打印哈希码。我读过类似 this one 的讨论还有

但是,假设 this.toString() 在 2 次打印相同的值,在第 3 次打印不同的值场合那么,是否可以断定前两次的对象是同一个,第三次是不同的?

我正在尝试确定(仅用于测试)一个对象是相同的还是不同的。就像说 this 指向相同或不同的地址。

在 Android 设备上运行的 Java 中检查对象是否相同或不同的任何更好方法? 或者,如果我能以某种方式获得对象的地址,那么整个难题就迎刃而解了。

最佳答案

Java中比较两个对象主要有3种方式:

  1. 比较对象引用(您要查找的那个)

    obj1 == obj2

    此条件为真当且仅当两个引用都指向同一对象

    CustomType obj1 = new CustomType();
    CustomType obj2 = ob1;
    boolean thisIsTrue = obj1 == obj2;

    但是:

    CustomType obj1 = new CustomType();
    CustomType obj2 = new CustomType();
    boolean thisIsFalse = obj1 == obj2;
  2. 比较对象数据

    obj1.equals(obj2)

    此条件的结果取决于 obj1 类上 equals 方法的实际实现。例如。这个设计糟糕的 equals 方法将始终返回 false。即使 obj1obj2 指向同一个对象。

    @Override
    public boolean equals(Object other){
    return false;
    }

    CustomType obj1 = new CustomType();
    CustomType obj2 = ob1;
    boolean thisIsTrue = obj1 == obj2;
    boolean thisIsFalse = obj1.equals(obj2);
  3. 比较对象哈希码

    obj1.hashCode() == obj2.hashCode()

    此条件的结果取决于 obj1obj2 类上 hashCode 方法的实际实现。不鼓励使用这种方法,因为它更不可信。两个完全不同的对象可以具有相同的哈希码。在某些特定情况下应慎重使用。

关于java - 如何判断一个对象是同一个还是不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58379945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com