java获取对象的内存地址(打印出内存地址) java获取对象的内存地址(打印出内存地址),java 怎么把内存地址打出来,System.identityHashCode,使用hashCode方法

目录

方法一:使用hashCode方法

方法二:使用System.identityHashCode方法

总结


方法一:使用hashCode方法

在Java中,每个对象都有一个hashCode()方法(由Object类提供),它返回一个对象的哈希码(即对象的内存地址)。我们可以通过调用hashCode方法来获取对象的内存地址,并将其打印出来。

public class Address {
 public static void main(String[] args) {
 Address address=new Address();
 System.out.println(address.hashCode());
 }
}

  

但是,存在一些类会重写他们的hashCode()方法,此时,该方法返回的就不是实际的地址值了,所以,一般不推荐使用 hashCode()方法来获取真实的内存地址

方法二:使用System.identityHashCode方法

Java还提供了System类中的identityHashCode方法,它返回一个对象的身份哈希码(即对象的内存地址)。不守hashCode()重写的影响

public class Address {
 public static void main(String[] args) {
 Address address=new Address();
 System.out.println("address hashCode:"+ address.hashCode());
 System.out.println("address 真实内存地址:"+ System.identityHashCode(address));
 String s1="str1";
 System.out.println("s1 hashCode:"+s1.hashCode());
 System.out.println("s1 真实内存地址:"+System.identityHashCode(s1));
 }
}

运行结果:

从运行结果也看出,重写hashCode后,hashCode打印的就不是真实的物理地址了。 

总结

通过使用hashCode或System.identityHashCode方法,我们可以在Java中打印出对象的内存地址。这些方法对于调试和内存管理非常有用。但是,hashCode方法可能会被重写,因此如果您需要获取对象的实际内存地址,请使用System.identityHashCode方法。

作者:wycly1120原文地址:https://blog.csdn.net/m0_62729850/article/details/140300652

%s 个评论

要回复文章请先登录注册