📜  Java中的 System.identityHashCode() 方法及示例

📅  最后修改于: 2022-05-13 01:55:07.782000             🧑  作者: Mango

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