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

📅  最后修改于: 2023-12-03 15:01:57.458000             🧑  作者: Mango

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

在Java中,System.identityHashCode()方法用于返回对象的哈希码。与Object.hashCode()方法不同,System.identityHashCode()方法返回的哈希码是根据对象的内存地址计算得到的,而不是根据对象的内容计算得到的。

语法
public static int identityHashCode(Object x)
参数
  • x:要计算哈希码的对象
返回值
  • 对象的哈希码,以int类型返回
示例
String str1 = "Hello";
String str2 = new String("Hello");
String str3 = "World";

int hashCode1 = System.identityHashCode(str1);
int hashCode2 = System.identityHashCode(str2);
int hashCode3 = System.identityHashCode(str3);

System.out.println("HashCode for str1: " + hashCode1);
System.out.println("HashCode for str2: " + hashCode2);
System.out.println("HashCode for str3: " + hashCode3);

上述示例中,我们创建了三个字符串对象str1str2str3,并分别调用了System.identityHashCode()方法计算它们的哈希码。然后,我们使用System.out.println()方法打印出了每个字符串对象的哈希码。

输出结果:

HashCode for str1: 366712642
HashCode for str2: 1829164700
HashCode for str3: 1824164700

需要注意的是,由于每个对象都有唯一的内存地址,所以它们的哈希码也是唯一的。尽管str1str2的字符串内容相同,但它们的哈希码是不同的。

总结

System.identityHashCode()方法是用于返回Java对象的内存地址计算得到的哈希码。它与Object.hashCode()方法的区别在于,前者返回的哈希码是根据内存地址计算得到的,而后者返回的哈希码是根据对象内容计算得到的。在某些情况下,System.identityHashCode()方法可以被用于更准确地比较两个对象是否相等。