(1)hasCode解释
-
hashCode()是Object类中定义的方法,用于返回对象的哈希码值。哈希码值是一个整数,用于在哈希表等数据结构中快速定位对象。
在Java中,哈希码值的计算是基于对象的内存地址的。默认情况下,hashCode()方法返回的是对象的内存地址的整数表示。因此,对于不同的对象,它们的哈希码值通常是不同的。
hashCode()方法在以下情况下非常有用:
-
哈希表:哈希表是一种常用的数据结构,用于存储和查找键值对。在哈希表中,对象的哈希码值被用作索引,可以快速定位到对应的存储位置。
-
集合类:在Java的集合类中,如HashSet、HashMap等,对象的哈希码值被用于判断对象是否已经存在于集合中。当我们向集合中添加元素时,集合会先计算元素的哈希码值,然后根据哈希码值判断是否存在相同的元素。
需要注意的是,hashCode()方法的实现需要满足以下几个原则:
-
一致性:在对象没有被修改的情况下,多次调用hashCode()方法应该返回相同的结果。
-
相等性:如果两个对象通过equals()方法比较相等,那么它们的hashCode()方法应该返回相同的结果。
-
散列性:不同的对象应该尽可能地产生不同的哈希码值,以减少哈希冲突的概率。
在自定义的类中,如果重写了equals()方法,通常也需要重写hashCode()方法,以保证相等的对象具有相同的哈希码值。重写hashCode()方法时,可以根据对象的内容来计算哈希码值,以实现更精确的哈希码计算。
总结:hashCode()方法是Object类中定义的方法,用于返回对象的哈希码值。哈希码值在哈希表和集合类中起到重要的作用,它可以快速定位对象和判断对象的相等性。在自定义的类中,通常需要重写hashCode()方法,以满足一致性、相等性和散列性的要求。
-
(2)
-
提高局具有哈希结构的容器效率;
-
两个引用,如果指向的是同一个对象,则哈希值肯定是一样的;
-
两个引用,如果指向的是不同的对象,则哈希值不同;
-
哈希值主要是根据地址号得来的,不能完全将哈希值等价于地址;
(3)ToString()
toString()是Object类中定义的方法,用于返回对象的字符串表示。默认情况下,toString()方法返回的是对象的类名和哈希码值的组合,例如"ClassName@hashCode"。但在实际开发中,我们通常会在自定义的类中重写toString()方法,以返回自定义的字符串表示。
重写toString()方法的目的是为了方便调试和输出对象的信息。通过重写toString()方法,我们可以将对象的属性和状态以字符串的形式展示出来,便于程序员理解和调试代码。
以下是重写toString()方法的一般步骤:
-
在类中添加toString()方法的声明,方法的返回类型为String。
-
在toString()方法中,将对象的属性和状态以字符串的形式拼接起来。
-
返回拼接好的字符串。
-
快捷键:alt+insert->ToString();
-
当直接输出一个对象时,toString 方法会被默认的调用;
总结:toString()方法是Object类中定义的方法,用于返回对象的字符串表示。通过重写toString()方法,我们可以自定义对象的字符串表示,方便调试和输出对象的信息。重写toString()方法的一般步骤是将对象的属性和状态以字符串的形式拼接起来,并返回拼接好的字符串。