美文网首页javaJava学习笔记程序员
Java 打印对象的内存地址

Java 打印对象的内存地址

作者: DongBold | 来源:发表于2016-12-03 18:33 被阅读564次

先来看java编程思想的上一个例子:

import java.util.*;

public class InfiniteRecurision {
    public String toString() {
        return " InfiniteRecurision address: " + this + "\n";
    }

    public static void main(String[] args) {
        List<InfiniteRecurision> v = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            v.add(new InfiniteRecurision());
        }
        System.out.println(v);
    }
}

这个程序是运行时会得到一长串异常, 这是因为return " InfiniteRecurision address: " + this + "\n";这一句陷入了无意识的递归, 这里发生了自动转型, 如果String对象后面加上了一个"+"号的话, 而后面的对象不是String类, 编译器就会尝试自动转型为String类, 这里用到了this, 所以变成了this.toString(), 于是乎, 进入了递归死循环.
那我们应该如何修改呢?
要想打印出对象的内存, 应该调用的是Object.toString(), 所以这里就不应该使用this, 而是应该调用super.toString()方法, 这样才是正确的做法:

import java.util.*;

public class InfiniteRecurision {
    public String toString() {
        return " InfiniteRecurision address: " + super.toString() + "\n";
    }

    public static void main(String[] args) {
        List<InfiniteRecurision> v = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            v.add(new InfiniteRecurision());
        }
        System.out.println(v);
    }
}

相关文章

  • 内存对齐

    8字节:指针大小、对象、属性 首先打印出对象获取内存地址: 然后打印内存地址:用x打印内存地址 然后打印内存地址:...

  • Java 打印对象的内存地址

    先来看java编程思想的上一个例子: 这个程序是运行时会得到一长串异常, 这是因为return " Infinit...

  • 常用的LLDB命令

    打印对象 print、p:打印 po:打印对象 读取内存 memory read/数量格式字节数 内存地址 x/...

  • iOS底层原理--001:alloc & init

    内存地址 & 指针地址 搭建allocDemo项目打印对象的内存地址和指针地址- (void)viewDidLoa...

  • 常用LLDB指令

    print , p打印内存地址 po打印对象 memory read 或者 x读取内存 memory read后边...

  • LLDB指令

    print / p : 打印 po : 打印对象 读取内存memory read / 数量格式字节数 内存地址x...

  • Objc4-818底层探索(一):alloc

    首先先看个例子: 他们的打印情况为 首先了解下, 三个打印依次是打印 对象内容, 对象指针指向的内存地址, 指针地...

  • lldb 常用指令

    p 打印po 打印对象 memory read/{数量}{格式}{字节数} 内存地址x/{数量}{格式}{字节数...

  • Cycript调试命令

    1. 基础调试命令 recursiveDescription - 打印UIView对象(内存地址,frame,au...

  • swift基础_内存管理

    一. 打印一个对象 我们经常打印对象的内存地址,也从网上看到一个对象占用16个字节,那到底是不是呢?让我们先来打印...

网友评论

    本文标题:Java 打印对象的内存地址

    本文链接:https://www.haomeiwen.com/subject/pyecmttx.html