hashCode()
Returns a hash code value for the object. This method issupported for the benefit of hash tables such as those provided by java.util.HashMap.
在JDK中,给这个方法的要求有三个:
-
在某Java程序的一次调用中,如果不进行相等性修改(原话:
provided no information used in equals comparisons on the object is modified
,我的理解是哈希值是用来确定两对象是否是同一对象的标准,equals comparisons
指的就是这种相等标准)操作,此方法返回的值是惟一的。但是不需要在Java程序的不同调用中保持不变。 -
两个对象在语义中是相等的,则它们有相同的哈希值。
-
如果两个对象在语义中是不相等的,则它们有不同的哈希值。
equals()
这个方法是判断两个对象在语义中是否相等,如果相等,返回true
,否则返回false
。由上面的hashCode()
可知,修改所以Java类在equal()
方法的时候,必须修改hashCode()
。
toString()
这个方法返回对象的字符串表示形式。也就是它提供了一个简洁明了但又包含这个对象信息的文本。 在Object中,这个文本是:getClass().getName() + '@' + Integer.toHexString(hashCode())
,类名+’@’+对象哈希值的十六进制表示。
getClass()
反射中经常用到的方法,用于得到某类的字节码对象。
线程相关
和线程相关的方法被我划分到线程那块整理。