首页 > 文章列表 > 为什么Java中打印Integer对象时输出的是值而不是内存地址?

为什么Java中打印Integer对象时输出的是值而不是内存地址?

443 2025-03-03

为什么Java中打印Integer对象时输出的是值而不是内存地址?

Java中Integer对象打印输出的是值而非内存地址的解析

在Java中,当我们声明一个Integer对象并赋值,例如Integer a = 1;,你可能会预期打印该变量会输出其内存地址。然而,System.out.println(a); 输出的结果却是1,而非内存地址。这是因为Java的机制巧妙地处理了对象输出。

toString()方法的自动调用

Java并没有直接调用a.intValue()方法。相反,它自动调用了对象的toString()方法,该方法将Integer对象转换为其字符串表示。这就是为什么输出结果是1的原因。

深层原因

Java的包装类(例如Integer)继承自Number类,而Number类定义了toString()方法。当我们尝试打印一个Integer对象时,Java会优先查找并执行该对象的toString()方法。

Integer类重写了toString()方法,使其直接返回整数的字符串形式。因此,打印a实际上是打印了整数1的字符串表示,而不是对象的内存地址。

来源:1739998396