java获取对象的内存地址(打印出内存地址)
创始人
2024-11-04 06:34:35

目录

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

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...