千家信息网

java中关于对象的实例比较分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"java中关于对象的实例比较分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java中关于对象的实例比较分析"吧!同类型对象的比较三个
千家信息网最后更新 2026年10月31日java中关于对象的实例比较分析

本篇内容主要讲解"java中关于对象的实例比较分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java中关于对象的实例比较分析"吧!

    同类型对象的比较

    三个维度去比较

    同一性

    相等性

    相似性

    样例引入

    想象一下这样的一个场景:小王去图书馆借了一本java核心技术卷1,如图

    不幸的是小王把书丢了,他又买了两本java核心技术卷1

    新买的书1 新买的书2

    若小王用新买的书1去还书

    1,若图书馆禁止他还书 //即不具备同一性(不是同一本书)

    2,若图书馆允许他还书 //具备"相等性"(不是同一本,只要相等即可)

    若小王用新买的书2去还书

    3,若图书馆允许他还书 //具备相似性

    Book b1 = new Book("白皮的java核心卷1"); b1和b1之间 <-> 同一性关系

    Book b2 = new Book("白皮的java核心卷1"); o1==o2 <-- 是判断什么关系,判断的是同一性,

    Book b3 = new Book("黄皮的java核心卷1"); 即o1和o2是否指向同一个对象。

    b1 == b1 =>true

    b1 == b2 =>false

    b1 == b3 =>false

    相等性判断

    java中没有原生提供相似性判断的逻辑,但有相等性判断的约束,即equals(相等)

    来自Object类中有一个equals方法。+ 所有类都继承自Object。 =>所有类都有自己的equals方法

    java希望类的实现者(谁定义的类),去书写正确的equals方法来保证相等性

    希望:

    b1.equals(b1) =>true

    b1.equals(b3) => false

    b1.equals (b2) =>true

    public class Main {    public static void main(String[] args) {        Book b1 = new Book("白色","java核心卷1");        Book b2 = new Book("白色","java核心卷1");        Book b3 = new Book("黄色","java核心卷1");        //查看同一性        System.out.println(b1==b1);//true        System.out.println(b2==b2);//true        System.out.println(b3==b3);//true        System.out.println(b1==b2);//false        System.out.println(b1==b3);//false         //查看相等性        System.out.println(b1.equals(b1));//true        System.out.println(b1.equals(b2));//希望是true//实际上打印false        System.out.println(b1.equals(b3));//false    }}

    上例中b1.equals(b2)为false,原因是Book中没有重写equals,故执行了它的父类Object的equals方法,而在Object中,equals还是在判断同一性,所以结果自然显示false。

    方法若想b1.equals(b2)为true,若需要正确的重写Book的equals方法。

    重写方法后必须保证正确性

    什么是正确性:

    • 自反性 =>b1.equals(b1) 得是true

    • 当b1.equals(b2)=> true ;b2.equals(b2) =>true

    • 传递性

      • b1.equals(b2) => true && b2.equals(b3) =>true 可得b1.equals(b3) =>true

    • 4,和null的结果一般是false

      • b1.equals(null) => false

    这里不需要自己手动写,使用工具生成正确的equals即可

    Code -> Generate ->equals();

    public class Book {    @Override    public boolean equals(Object o) {        if (this == o) return true;        if (o == null || getClass() != o.getClass()) return false;        Book book = (Book) o;        return color.equals(book.color) &&                name.equals(book.name);    }      public String color;    public String name;     public Book(String color ,String name) {        this.color = color;        this.name = name;     }

    重写了equals方法后,再去运行,此时 已经重写了equals方法,b1.equals(b2)为true。

    到此,相信大家对"java中关于对象的实例比较分析"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    方法 核心 对象 同一性 图书 图书馆 小王 实例 中关 分析 相似 相似性 内容 实际 技术 正确性 白皮 白色 结果 一本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 智能科技公司是互联网公司吗 金融科技 互联网金融 北京互联网络科技有限公司 互联网金融科技创新 融势互联网科技 融贸通互联网科技 安控科技rtu产品工业互联网 科技赋能互联网健康 科技与互联网的利与弊 移动互联网科技公司 知域互联网科技有限公司大骗子 互联网科技大奖都有哪些公司 米聚互联网科技南京有限公司排面 西安小鹰速贷互联网科技有限公司 工业互联网等科技实现智能化赋能 特约风豹互联网科技为什么扣费 工业互联网山东科技大学 互联网营销推广黑科技 云南互联网科技学费 广西泛欧互联网科技有限公司 云南咖啡 互联网是第几次科技革命的成果 美国互联网科技巨头监管 上游互联网科技 云创客互联网科技公司 中国互联网十大科技股排名 众安科技工业互联网合作 卡尔迅互联网科技有限公司 广州燕处互联网科技有限公司 互联网科技大会大佬
    0