关键区别–在java中等于与哈希代码
equals类似于==运算符,它用于测试对象标识而不是对象相等性。hashCode是一种方法,类通过该方法隐式或显式地将存储在类实例中的数据分解为单个哈希值,该散列值是一个32位有符号整数。在Java中,equals和hashCode之间的关键区别在于equals用于比较两个对象,而hashCode用于散列,以决定对象应归入哪个组。
目录
1. 概述和主要区别
2. 在Java中什么是相等的
3. 什么是Java中的hashCode
4. 并排比较——用表格形式表示的Java中的equals与hashCode
5. 摘要
什么是在java中等于(equals in java)?
equals方法用于比较两个对象。默认的equals方法在对象类中定义。该实现类似于==运算符。两个对象引用只有在指向同一对象时才相等。可以重写equals方法。
声明System.out.println(s1.equals(s2))将给出错误的答案,因为s1和s2指的是两个不同的对象。与声明相似,System.out.println(s1==s2);
声明System.out.println(s1.equals(s3))将给出正确的答案,因为s1和s3引用的是同一个对象。与声明相似,System.out.println(s1==s3);
学生班没有平等的方法。因此,对象类中的equals被调用。只有当对象引用指向同一对象时,才会显示True。
根据上述程序,将重写equals方法。将一个对象传递给方法,并将其类型强制转换为Student。然后,检查id值。如果id值相似,则返回true。否则,它将返回false。s1和s2的id相似。所以,它会印出真的。s1和s3的id也很相似,因此它将打印为true。
什么是java中的hashcode(hashcode in java)?
哈希代码用于散列,以决定对象应归入哪个组。一组对象可以共享相同的哈希代码。正确的哈希函数可以将对象均匀地分布到不同的组中。
正确的哈希代码可以具有如下属性。假设有两个对象obj1和obj2。如果obj1.equals(obj2)为真,那么obj1.hashCode()等于obj2.hashCode()。如果obj1.equals(obj2)为false,则不必obj1.hashCode()不等于obj2.hashCode()。两个不相等的对象也可能具有相同的哈希代码。
Student类包含equals和hashCode方法。Student类中的equals方法将接收一个对象。如果对象为null,则返回false。如果对象的类不相同,则返回false。在两个对象中都会检查id值。如果它们相似,则返回true。否则将返回false。
在主程序中,创建对象s1和s2。当调用s1.equals(s2)时,将给出true,因为equals方法被重写,它检查两个对象的id值。即使它们引用的是两个对象,但答案是正确的,因为s1和s2的id值是相同的。由于s1.equals(s2)为真,s1和s2的hashCode应该相等。打印s1和s2的hashCode得到相同的值。hashCode方法可用于HashMap等集合。
等于(equals)和java中的hashcode(hashcode in java)的区别
等于Java中的hashCode | |
equals是Java中的一个方法,它的作用类似于==运算符,后者用于测试对象标识而不是对象相等性。 | hashCode是一种方法,类通过该方法隐式或显式地将存储在类实例中的数据分解为单个哈希值。 |
使用 | |
equals方法用于比较两个对象。 | 该方法用于散列,以确定应将对象放入哪个组中。 |
总结 - 等于(equals) vs. java中的hashcode(hashcode in java)
在Java中equals和hashCode的区别在于,equals用于比较两个对象,而hashCode用于散列,以决定对象应归入哪个组。