ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Object类

2022-07-20 10:33:40  阅读:181  来源: 互联网

标签:对象 Object equals hashCode id ObjectTestBean public


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有