有些特殊的类需要重写 hashCode() 方法,比如String:它重写了 equals() 方法,String 的 equals() 方法不是比较在内存是不是同一个对象,而是比较字符序列是否相等。按 java 的规范,通过 equals() 比较两个对象相等,hashCode() 也应该相等,所以就要连 hashCode() 一起重写。
也就是不同的类,计算规则不同,所以才需要重写。
相等和哈希码 相等是从一般的方面来讲,哈希码更加具有技术性。如果我们在理解方面存在困难,我们可以说,他们通过只是一个实现细节来提高了性能。 大多数的数据结构通过equals方法来判断他们是否包含一个元素,例如: List list = ArraysasList
可以使用对象的toString()方法,回返回一个字符串,字符串后半部分的哈希码就是唯一的。
toString
public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂。建议所有子类都重写此方法。
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass()getName() + '@' + IntegertoHexString(hashCode())
返回:
该对象的字符串表示形式。
以上就是关于Java为什么一般要覆写hashcode方法,object获取的不是已经是唯一的了吗全部的内容,包括:Java为什么一般要覆写hashcode方法,object获取的不是已经是唯一的了吗、如何正确实现 Java 中的 HashCode、java的jvm在执行java程序的时候,会给新建的对象分配一个唯一的标识,请问这个唯一标识怎么获取阿等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)