Java中的 System.identityHashCode() 方法及示例
Java.lang.System.identityHashCode() 是用于为默认方法 hashCode() 返回的任何给定对象返回相同哈希码的方法。此外,对于每个具有空引用零的哈希码,都将返回。
要记住的要点:
- 默认情况下,每个类都隐式或显式提供 hashCode() 方法
- 哈希码通常是从任何对象生成的数字,它允许在哈希表中非常快速地存储或检索对象。
- 在Java中,默认情况下 hashCode() 是一个本地方法,这意味着该方法具有修饰符“native”,当它直接在 JVM 中的本地代码中实现时。
- 用于将存储在类实例中的所有数据消化成单个哈希值,即 32 位有符号整数。
句法 :
public static int identityHashCode(Object x)
参数:参数x是Hash的类型,指的是需要计算的hashCode。
返回值:此方法返回 hashCode。
下面的程序说明了Java.lang.System.identityHashCode() 方法的使用。
方案一:
// Java program to demonstrate working // of java.lang.System.identityHashCode() method. import java.lang.*; import java.io.*; public class SystemCode1 { public static void main(String[] args) throws Exception { File filename1 = new File("Welcome"); File filename2 = new File("Welcome"); File filename3 = new File("Geek"); File filename4 = new File("World"); // Returns the HashCode int returnvalue1 = System.identityHashCode(filename1); System.out.println(returnvalue1); // Returns different HashCode for same filename int returnvalue2 = System.identityHashCode(filename2); System.out.println(returnvalue2); // Returns the HashCode int returnvalue3 = System.identityHashCode(filename3); System.out.println(returnvalue3); // Returns the HashCode int returnvalue4 = System.identityHashCode(filename4); System.out.println(returnvalue4); } }
输出:589431969 1252169911 2101973421 685325104
解释:
在上面的程序中,即使它们具有相同的名称,也会从一个对象生成不同的哈希码或数字。就像这里我们可以看到前两个词是相同的,即“欢迎”,但是我们有两个不同的值,它们是- 589431969
- 1252169911
分别为第一次和第二次欢迎
方案二:
// Java program to demonstrate working // of java.lang.System.identityHashCode() method. import java.lang.*; import java.io.*; public class SystemCode2 { public static void main(String[] args) throws Exception { File filename1 = new File("10"); File filename2 = new File("shyam"); File filename3 = new File("s12"); File filename4 = new File("s12"); // Returns the HashCode int returnvalue1 = System.identityHashCode(filename1); System.out.println(returnvalue1); // Returns the HashCode int returnvalue2 = System.identityHashCode(filename2); System.out.println(returnvalue2); // Returns different HashCode for same filename int returnvalue3 = System.identityHashCode(filename3); System.out.println(returnvalue3); // Returns different HashCode for same filename int returnvalue4 = System.identityHashCode(filename4); System.out.println(returnvalue4); } }
输出:589431969 1252169911 2101973421 685325104