JAVA中比较对象是否相等的方式是什么?为什么重写equals就一定要重写hashcode?百天百题(3/100)

简介: JAVA中比较对象是否相等的方式是什么?为什么重写equals就一定要重写hashcode?


目录

JAVA中比较对象是否相等的方式是什么?

为什么重写equals就一定要重写hashcode?

JAVA中比较对象是否相等的方式是什么?
在了解这个问题之前需要先知道:

1.如果对象相同,那么hashcode是一定相同的。

2.对象不同的话,hashcode可能会不同,也可能会相同。

接下来在考虑比较对象的方式:

    先通过hashcode来比较,如果hashcode不同的话那么肯定不是一个对象,如果hashcode相同,接下来就是用equals来一个一个比较字段值。

    为什么不直接通过equals来比较呢?因为当字段值多的时候,equlas的性能底下,所以需要先借助hashcode来比较。

为什么重写equals就一定要重写hashcode?

    此时我们已经重写了equals,但是没有重写hashcode,由此可见我们两个相同的对象equals的比较是相等的,但是hashcode是不同的,我们把他们加入在hashset中发现,两个对象竟然都成功添加进去了。这是一件非常恐怖的事。所以我们要在重写equals的时候重写hashcode,这样才能保证对象的一致性。因为比较对象是否相同的第一步就是比较hashcode值是否相等。

相关文章
|
1天前
|
缓存 Java 程序员
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
|
1天前
|
Java
从源码出发:JAVA中对象的比较
从源码出发:JAVA中对象的比较
9 3
|
1天前
|
Java
Java一分钟之-多态性:理解重写与接口
【5月更文挑战第9天】本文介绍了Java中的多态性,主要通过方法重写和接口实现。重写允许子类根据实际类型执行不同实现,关键点包括方法签名相同、访问权限不降低以及final、static和abstract方法不可重写。接口是抽象类型,包含抽象方法,提供另一种多态性实现。常见问题包括混淆重载与重写、不理解动态绑定以及滥用接口。为避免问题,需明确重写目的、合理设计接口,并在使用多态时注意类型检查。多态性是提升代码质量和灵活性的关键。
8 1
|
1天前
|
安全 Java 编译器
java中类与对象回顾总结-2
java中类与对象回顾总结
13 3
|
1天前
|
Java 编译器
java中类与对象回顾总结-1
java中类与对象回顾总结
13 3
|
2天前
|
Java
Java一分钟之-类与对象:面向对象编程入门
【5月更文挑战第8天】本文为Java面向对象编程的入门指南,介绍了类与对象的基础概念、常见问题及规避策略。文章通过代码示例展示了如何定义类,包括访问修饰符的适当使用、构造器的设计以及方法的封装。同时,讨论了对象创建与使用时可能遇到的内存泄漏、空指针异常和数据不一致等问题,并提供了相应的解决建议。学习OOP需注重理论与实践相结合,不断编写和优化代码。
25 1
|
8天前
|
SQL Java 数据库连接
15:MyBatis对象关系与映射结构-Java Spring
15:MyBatis对象关系与映射结构-Java Spring
29 4
|
5月前
|
Java 编译器
详解Java中的重写和重载 | 动态绑定和静态绑定
详解Java中的重写和重载 | 动态绑定和静态绑定
95 0
|
10月前
|
Java
Java中重写与重载
Java中重写与重载