其他分享
首页 > 其他分享> > Object类

Object类

作者:互联网

1.Object类概述

Object类是属于java.lang包下的类。java.lang.Object类是Java语言的根类,是所有类的父类。

2.Object类的方法

getClass()方法:返回对象的运行时类

public final native Class<?> getClass();

hashCode()方法:返回对象的哈希码,该方法默认返回的哈希码是按照对象的地址生成。

class ObjectTestBean{
    private int id;
}
public class ObjectTest {

    public static void main(String[] args) {
        ObjectTestBean objectTestBean1 = new ObjectTestBean();
        ObjectTestBean objectTestBean2 = new ObjectTestBean();
        System.out.println("对象地址: " + objectTestBean1 + " :hash -> " + objectTestBean1.hashCode());
        System.out.println("对象地址: " + objectTestBean2 + " :hash -> " + objectTestBean2.hashCode());
    }
}

控制台的输出:

image-20220719151558170

equals()方法:用来判断两个对象是否相等,该方法是比较对象的内存地址。如果要进行比较对象中的内容是否相等,则要重写hasCode()方法和equals()方法。

判断两个对象内容下相等的代码如下:

class ObjectTestBean{
    private int id;
    private String name;

    public ObjectTestBean(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        ObjectTestBean that = (ObjectTestBean) o;

        if (id != that.id) return false;
        return Objects.equals(name, that.name);
    }
}
public class ObjectTest {

    public static void main(String[] args) {
        ObjectTestBean objectTestBean1 = new ObjectTestBean(1, "lisi");
        ObjectTestBean objectTestBean2 = new ObjectTestBean(1, "lisi");
        System.out.println(objectTestBean1.equals(objectTestBean2));
    }
}

下面关于equals()就会涉及到以下的问题。

问题一:equals() 与 == 的区别是什么?

==:它的作用是用来判断两个对象的地址是否相等。

equals():它的作用要分两种情况:

​ 情况一:类没有重写equals()方法,则比较两个对象的地址是否相等。

​ 情况二:类重写了equals()方法,则比较两个对象的内容是否相等。


问题二:hashCode() 和 equals() 的关系?

对于两者的关系要分为两种情况来分析:

情况一:该类不会用来创建散列表

​ 在这种情况下,hashCode()equals()方法没有任何关系

情况二:该类会用在创建散列表

​ 在这种情况下,hashCode()equals()方法是有关系的:如果两个对象相等,hash值一定相同;如果hash值相等,对象却不一定相等因此,在这种情况下。若要判断两个对象是否相等,除了要覆盖equals()之外,也要覆盖hashCode()函数。否则,equals()无效。

标签:对象,Object,equals,hashCode,id,ObjectTestBean,public
来源: https://www.cnblogs.com/lyfzzz/p/16496938.html