在java中,关于equals(),和hashCode()的重写问题。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在java中,关于equals(),和hashCode()的重写问题。相关的知识,希望对你有一定的参考价值。
在java中,在集合类,关于equals()的重写,在equals(Object obj ),为什么要用Object来调用。不用其他的变量。还有hashCode()的重写问题,请大侠们给点详细的解释啊
java中所有类都是object的子类,子类拥有父类非私有的变量和方法因此不光可以用object调,所有java对象都可以调用equal方法。追问那hashCode()呢?这个我不是很理解额
追答hashcode是根据hash算法为每个散列在内存中对象生成一个标示码,当你实现hashcode方法时要考虑 你生成的hash值是否能和其他对象进行区分。看看think in java 都有
参考资料:think in java
参考技术A object更高级 是他们的父类对象 参考技术B object是所有类的基类java-4
object类
1.object类是所有类的父类,位于java.lang包中。
2.数组也是object类的子类。
3.object类的常用方法
--tostring();
toString方法可以将任何一个对象转换成 字符串返回。
--equals();
Object类中的equals方法,用来比较两个引用的虚地址。当且仅当两个引用在物理上是同一个对象时,返回值为true,否则将返回false。
--hashcode();
获取对象的哈希码值,为16进制
4.任何类的对象都可以调用object类中的方法,包括数组对象。
object和object[]之间的区别
----方法中的形参是object类型时,任何类型的参数都可以传进去执行。
----方法中的形参是object[]类型时,只有对象数组可以传入执行。
static和final
-----static:修饰属性、方法、块、内部类
-----final:修饰类、常量属性、方法、局部常量
static被称为静态,可以用来修饰类的属性或者方法,被static修饰的属性被称为静态属性。
static属性可以使用对象调用,也可以直接用类名调用,静态属性在内存中只有一个。
static块
静态块只有在类加载的时候被执行一次,不管创建多少个对象,都不会再执行。
final 用于声明属性,方法和类
----属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改。
----方法:定义必须有实现代码,并且子类里不可被覆盖。
----类:不能被定义为抽象类或是接口,不可被继承。
以上是关于在java中,关于equals(),和hashCode()的重写问题。的主要内容,如果未能解决你的问题,请参考以下文章