我刚开始学习Java,想问你一个关于Integer对象的问题。
例如我们有:
Integer i = new Integer(15);
为什么输入System.out.println(i)看不到内存地址?
我知道,如果我想查看任何对象的内存地址,我输入 S.O.P(obj) 并且我看到一个内存地址,如projectname.classname@4141d797,并且它存储在堆栈中,因为对于引用类型,堆栈保存指向堆上对象的指针。
我发现这不适用于 Integer 对象。如果我输入 S.O.P(i),我会收到 15。
为什么在这种情况下堆栈不保存堆上对象的内存地址?
提前致谢!
最佳答案
因为 Integer
会覆盖默认的 Object.toString()
方法,该方法会为您提供您正在考虑的特定输出。
严格来说,它甚至不是一个内存地址,尽管当前的实现确实使用该地址作为其基础。然而,对象可以在内存中移动,并且该值不会改变,因此您不能真正从中得出任何结论。
最后,你不应该关心它。您无需担心 Java 对象的存储位置。
关于java - Integer对象的内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49553619/