在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()的重写问题。的主要内容,如果未能解决你的问题,请参考以下文章

在java中,关于equals(),和hashCode()的重写问题。

关于java中equals方法的疑惑

是啥导致 java.lang.***Error

关于Java中的hashCode和equals方法

Java中equals和==之间的区别

关于JAVA核心技术(卷一)读后的思考(equals方法的讨论)