一、System函数

当使用System.out.println()方法打印String类型对象时,会输出String对象代表的字符串,并不会输出对象的地址。因此,我们必须借助其他API来实现该功能。

java.lang.System类的方法

public static native int identityHashCode(Object x);
Returns the same hash code for the given object as would be returned by the default method hashCode(), whether or not the given object’s class overrides hashCode(). The hash code for the null reference is zero.
Params: x – object for which the hashCode is to be calculated
Returns: the hashCode

无论给定对象的类是否覆盖hashCode(),返回给定对象的哈希码与默认hashCode()方法返回的哈希码相同。空引用的哈希码是零。默认hashCode()方法,即Object对象中的hashCode()方法

public native int hashCode();
As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer)

在合理可行的情况下,由 Object 类定义的 hashCode() 方法为不同的对象返回不同的整数。 (通常将对象的内部地址转换为整数),也就是说Object类的hashcode()方法返回对象的地址。

二、实现代码

一般,被打印的对象的形式为:java.lang.Object@1ff9dc36,由全限定类名+@+十六进制数组成。

为了打印的字符串对象的形式和一般形式相同,我们还需要使用另外两个方法,

String.class.getName() 返回全限定类名java.lang.String;
Integer.toHexString(int) 将十进制数转换为十六进制数并返回;

代码如下及运行结果:

参考代码:

public class StringObjectAddrTest {public static void main(String[] args) {String str = "HelloWorld";System.out.println(String.class.getName() + "@" + Integer.toHexString(System.identityHashCode(str)));// 与Object对比System.out.println(new Object());}}

Java打印String对象的地址相关推荐

  1. java中String对象作为参数传递问题

    问题 java中将对象作为参数传递究竟是值传递还是引用传递? 1.基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的. 2.对象作为参数传递时,是把对象在内存中的地址拷贝 ...

  2. java中String对象和String变量

    2019独角兽企业重金招聘Python工程师标准>>> java中String对象和String变量 (2011-12-27 20:40:27) 转载▼ 标签: it 最近在论坛上看 ...

  3. Java中String对象的replaceAll方法调用性能优化小技巧

    Java中String对象的replaceAll方法调用性能优化小技巧 0x01 Java中String对象的replaceAll方法调用性能优化小技巧 1.1 What? 1.2 Why? 1.3 ...

  4. [Java基础]String对象的特点(易错点)

    String对象的特点: 1.通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同. 2.以""方式给出的字符串,只要字符串相同(顺序和大小写 ...

  5. java 创建string对象机制 字符串缓冲池 字符串拼接机制 字符串中intern()方法...

    字符串常量池:字符串常量池在方法区中 为了优化空间,为了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池.如果字符串已经存在池中,就 ...

  6. Java使用String对象的split()方法分割字符串的小坑

    Java中,按某个字符分割字符串使用的是String对象的split()方法,返回的是分割之后的String数组,值得注意的是分割符.当分割符是 . 或者是 | 时,必须使用 \ 进行转义. 没有加转 ...

  7. Java中String对象存储

    2019独角兽企业重金招聘Python工程师标准>>> String对象 String s = new String("xyz"):创建了两个对象一个是" ...

  8. java 创建string对象机制 字符串缓冲池 字符串拼接机制

    对于创建String对象的机制,在这一过程中涉及的东西还是值得探究一番的. 首先看通过new String对象和直接赋值的方式有什么区别,看如下代码: public static void main( ...

  9. 深入分析Java中打印对象内存地址 System.identityHashCode()方法

    文章目录 地址是什么样子的 toString()方法 重写hashCode identityHashCode与真正的内存地址 参考 地址是什么样子的 我们知道system.out.println(ne ...

最新文章

  1. C++随笔——虚拟继承
  2. 南科大计算机系实力a,五大竞赛学科A+高校排行榜发布!北大实力碾压,科大赶超清华...
  3. java web获取请求体内容
  4. OpenShift 4 Hands-on Lab (3) - 应用部署和切换策略(蓝绿、金丝雀和A/B、回滚)
  5. nft文件传输_Nancy之文件上传与下载
  6. 我晕,原来是这个问题!
  7. 找到7天内要过生日的记录
  8. python3.4编程,麻瓜编程·python实战·4-3自学:给4-2作业换新界面
  9. 利用MDTools和Hydraw设计专业的液压阀块
  10. 普通二维码跳转微信小程序
  11. 在iOS设备上进行抓包(补充)
  12. 翟菜花:5G时代的顺风车,智能音箱该怎么坐?
  13. MFC软件欢迎界面(基于对话框,VS2013)
  14. 论文阅读笔记:《EIGENGAME: PCA AS A NASH EQUILIBRIUM》(特征博弈:主成分分析就是纳什均衡)
  15. DBCHART的使用
  16. CCD相机模数转换芯片时序简介
  17. 用 200 行 Python 代码掌握基本音乐理论
  18. 美国计算机科学奥林匹克竞赛试题acsl,2020年国际数学奥林匹克竞赛试题全部出炉,网友:给答案都看不懂...
  19. PBA认证有可能像PMP一样流行吗?
  20. 思考(九十):熔断器介绍

热门文章

  1. 关于质数的后代的解题
  2. 纯css3画的奶牛动物头像代码
  3. 羊了个羊游戏开发教程2:随机生成卡牌
  4. 关于差分放大电路,你了解多少?
  5. nginx配置转发时,提示no Route matched with those values
  6. 简易html视频播放器
  7. ES6模块加载方案 CommonJS和AMD ES6和CommonJS
  8. 12月5日——培训第14天
  9. php 微信消息,php实现微信公众号回复消息
  10. 01_计算机和java基础