java获取对象的内存地址(打印出内存地址)

avatar
作者
猴君
阅读量:0

目录

方法一:使用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方法。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!