17370845950

Integer包装类打印时为什么不显示内存地址?

Java Integer包装类打印时为何不显示内存地址?

考虑以下Java代码:

Integer a = 1;
System.out.println(a);

输出结果为:

1

为什么没有输出内存地址?

这是因为Integer a = 1;语句创建了一个Integer对象,其值为1。 当System.out.println(a);执行时,它并非直接打印对象的内存地址,而是调用了Integer类的toString()方法。

Integer类的toString()方法的实现类似于:

@Override
public String toString() {
    return Integer.toString(value);
}

该方法将Integer对象的内部数值(value)转换为字符串,并将其打印到控制台。因此,我们看到的是数值1,而不是内存地址。 这是Java为了方便程序员而设计的默认行为,它自动将对象转换为其表示的字符串形式。 如果需要打印内存地址,则需要使用其他方法,例如反射机制。