我刚刚开始学习Java,我想问一个关于Integer对象的问题。
例如,我们有:
Integer i = new Integer(15);
如果键入System.out.println(i),为什么看不到内存地址?
我知道,如果我想查看任何对象的内存地址,请键入SOP(obj),然后看到一个内存项目,例如projectname.classname@4141d797,并将其存储在堆栈中,因为对于引用类型,堆栈持有指向的指针。堆上的对象。
而且我发现这不适用于Integer对象。如果输入SOP(i),我将收到15。
为什么在这种情况下,堆栈不保存堆中对象的内存地址?
提前致谢!
当您尝试使用System.out.println
命令打印对象时,真正发生的是toString
对该对象方法的调用。所有对象都隐式扩展了Object类,该类的toString
方法返回您熟悉的输出。
但是,对于Integer类,该类将toString
被覆盖并返回Integer的值。那是因为如果您要打印一个整数,很可能只想学习它表示的数字,而不是对象的字符串表示
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句