String object, the characters of the string are used to compute the hash code. For an Integer object, the integer value is used to compute the hash code. Hash codes are typically used as an efficient way of comparing the values of two objects. For example, if the hash code of the string "hello" is 33, another String object with the same contents would also a hash code of 33.
If the hash codes of two object values are different, the object values are guaranteed to be different. However, if the hash codes of two object values are the same, the object values are not guaranteed to be the same. An additional call to Object.equals() must be made to confirm that the object values are the same. A good hash code algorithm will minimize the chance of two different values having the same hash code.
The `==' operator is the most efficient way to determine if two objects (rather than object values) are the same. However, in very limited applications, it may be necessary to get the hash code of an object (called the identity hash code) rather than of the object value. For example, a hash table of objects requires the use of the identity hash code.
File file1 = new File("a"); File file2 = new File("a"); File file3 = new File("b"); // Get the hash codes int hc1 = file1.hashCode(); // 1234416 int hc2 = file2.hashCode(); // 1234416 int hc3 = file3.hashCode(); // 1234419 // Check if two object values are the same if (hc1 == hc2 && file1.equals(file2)) { // They are the same } // Get the identity hash codes int ihc1 = System.identityHashCode(file1); // 1027049 int ihc2 = System.identityHashCode(file2); // 14642381 int ihc3 = System.identityHashCode(file3); // 6298545
博客介绍了哈希码通常用于高效比较两个对象的值,若两对象哈希码不同则值不同,相同则需进一步确认。好的哈希码算法能减少不同值有相同哈希码的概率。还提到`'`运算符可判断两对象是否相同,特定应用中可能需获取对象的标识哈希码,如哈希表。
1012

被折叠的 条评论
为什么被折叠?



