相关疑难解决方法(0)

Java中==和equals()之间有什么区别?

我想澄清一下我是否理解正确:

  • == - >是参考比较,即两个对象都指向相同的内存位置
  • .equals() - >计算对象中值的比较

我的理解是正确的吗?

java identity equality object-comparison

592
推荐指数
12
解决办法
62万
查看次数

比较Class对象

我必须将一个Class对象与一个预定义的类列表进行比较.

使用安全==还是应该使用equals

if        (klass == KlassA.class) {
} else if (klass == KlassB.class) {
} else if (klass == KlassC.class) {
} else {
}
Run Code Online (Sandbox Code Playgroud)

注意:我不能使用instanceof,我没有对象,我只是拥有该Class对象.我(错误)在这种情况下使用它就像一个枚举!

java

21
推荐指数
2
解决办法
3万
查看次数

==运算符和equals()之间有什么区别?(用hashcode()???)

我正在更深入地学习哈希码,并认为:

1.如果重写equals(),则必须覆盖hashcode().

2.要查找2个对象是否是同一个对象,请使用==运算符

考虑到这两个因素,在Java中我假设当== operator用于比较2个实例是否相同时,

if(object1 == object2)
Run Code Online (Sandbox Code Playgroud)

实际上是在做

if(object1.hashcode() == object2.hashcode())
Run Code Online (Sandbox Code Playgroud)

但是通过下面的测试看起来我错了.

public class Main {

    public static void main(String[] args){
        Obj1 one = new Obj1();
        Obj1 two = new Obj1();
        //is this calling hashCode() in backend???
        if(one == two) {
            System.out.println("same");
        }
        else {
            System.out.println("nope");
        }
        //this is of course return true
        if(one == one) {
            System.out.println("one and one is same");
        }
    }
}

class Obj1 {
    @Override
    public int hashCode() {
        System.out.println("hashCode() is called"); …
Run Code Online (Sandbox Code Playgroud)

java equals operators hashcode

4
推荐指数
2
解决办法
1万
查看次数