📅  最后修改于: 2023-12-03 15:01:57.458000             🧑  作者: Mango
在Java中,System.identityHashCode()
方法用于返回对象的哈希码。与Object.hashCode()
方法不同,System.identityHashCode()
方法返回的哈希码是根据对象的内存地址计算得到的,而不是根据对象的内容计算得到的。
public static int identityHashCode(Object x)
x
:要计算哈希码的对象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);
上述示例中,我们创建了三个字符串对象str1
、str2
和str3
,并分别调用了System.identityHashCode()
方法计算它们的哈希码。然后,我们使用System.out.println()
方法打印出了每个字符串对象的哈希码。
输出结果:
HashCode for str1: 366712642
HashCode for str2: 1829164700
HashCode for str3: 1824164700
需要注意的是,由于每个对象都有唯一的内存地址,所以它们的哈希码也是唯一的。尽管str1
和str2
的字符串内容相同,但它们的哈希码是不同的。
System.identityHashCode()
方法是用于返回Java对象的内存地址计算得到的哈希码。它与Object.hashCode()
方法的区别在于,前者返回的哈希码是根据内存地址计算得到的,而后者返回的哈希码是根据对象内容计算得到的。在某些情况下,System.identityHashCode()
方法可以被用于更准确地比较两个对象是否相等。