整数对象的内存地址

猫王:

我刚刚开始学习Java,我想问一个关于Integer对象的问题。

例如,我们有:

 Integer i = new Integer(15);

如果键入System.out.println(i),为什么看不到内存地址?

我知道,如果我想查看任何对象的内存地址,请键入SOP(obj),然后看到一个内存项目,例如projectname.classname@4141d797,并将其存储在堆栈中,因为对于引用类型,堆栈持有指向的指针。堆上的对象。

而且我发现这不适用于Integer对象。如果输入SOP(i),我将收到15。

为什么在这种情况下,堆栈不保存堆中对象的内存地址?

提前致谢!

尼科斯·齐亚纳斯(Nikos Tzianas):

当您尝试使用System.out.println命令打印对象时,真正发生的是toString对该对象方法的调用。所有对象都隐式扩展了Object类,该类的toString方法返回您熟悉的输出。

但是,对于Integer类,该类将toString被覆盖并返回Integer的值。那是因为如果您要打印一个整数,很可能只想学习它表示的数字,而不是对象的字符串表示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章