Java打印对象的内存地址
来源:互联网 发布:线割编程 编辑:程序博客网 时间:2024/05/22 09:24
如果需要toString()方法打印出对象的内存地址,也许会这么写:
public class InfiniteRecursion { public String toString() { return "InfiniteRecursive address: " + this + "\n"; } public static void main(String[] args) { InfiniteRecursion ir = new InfiniteRecursion(); System.out.println(ir); }}
这样写代码运行时会出现异常。原因在于,在"InfiniteRecursive address: " + this + "\n";
这里发生了自动类型转换,由this的InfiniteRecursion类型转换成String类型。编译器看到一个String类型的变量后面跟着一个“+”,而再后面的对象不是String类型,所以编译器会尝试着将this转换成一个String对象。问题来了,编译器要怎么转换呢?就是使用this的toString()方法,这样就会发生递归调用,产生了异常。
如果想要正确地打印出内存地址,应该调用Object.toString()方法,所以应该把toString()方法中的this改成super.toString()就没问题了。
1 0
- Java打印对象的内存地址
- Java String 对象内存地址
- java打印对象地址防止递归
- java打印对象地址防止递归
- Swift如何打印对象内存地址(Swift嵌套函数的一个特点)
- java的类模板,对象,实例内存地址分析
- 获取对象的内存地址
- 如何打印内存地址
- 打印内存地址
- C# 打印内存地址
- Java对象的地址
- Java对象的地址
- java 打印对象的原理
- 在指定的内存地址创建对象
- 按内存地址区分不同的对象
- java对象的内存
- C/C++内存地址打印
- C#使用Runtime.InteropServices打印变量的内存地址
- JBox的简单使用Demo
- Apk反编译
- ViewPager 带小圆点 自动轮播
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛
- typedef的作用以及与define的区别
- Java打印对象的内存地址
- c++作业4
- WebService的初步探究与应用-02(SOAP协议)
- 面试题11:数值的整数次方
- [剑指offer]数值的整数次方
- 手把手实现AdaBoost算法
- java中遍历MAP的几种方法
- Linux下LAMP环境的搭建
- css3的box-sizing