为什么list输出是数组类型的字符串而数组却是内存地址?

本文围绕Java中List与Array的toString()方法展开。由于object.java类是所有类基类,其toString方法打印内存地址。List因继承的类重写了toString方法,所以打印数组类型字符串;而数组本身未重写,需用Arrays.toString()才能打印数组类型字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**1.原因是object.java类是所有类的基类,称为父类/超类,java中所有的类都会继承该类,而该类的toString方法打印的就是内存地址.当System.out.println(X)的时候,实际打印的就是X.toString()方法的内容,如果X元素没有重写toString()方法那么就是内存地址值,如果重写了就是数组类型的字符串,**至于System.out.println(X)方法为什么会打印的就是X.toString()的内容,在下面以list和array做详细介绍.
2.list中打印的确是数组类型的字符串,原因是list类继承自下图中的AbstractList类,
在这里插入图片描述
该类又继承了AbstractCollection类,该类重写了toString方法.返回的是数组类型的字符串,如下图所示:
在这里插入图片描述
因此,list也继承了重写后的toString()方法.
我们再看一下System.out.println()方法,进入到println()方法发现,他打印的就是元素的toString()的内容,如下图所示:
在这里插入图片描述
进入上图方法中,点击valueof()方法,进入到下图中:
在这里插入图片描述
我们发现,其实System,out.println()方法打印的就是传入的该元素的toString()的值,在结合list中已经重写了该方法,因此打印的是数组类型的字符串.
3.数组为什么重写后还是内存地址,必须要用Ayyays.toString(数组)才能打印数组类型的字符串?
原因与list中原因是一致的,因为数组的Arrays类重写了toString()方法,而本身创建的数组没有重写toString()的方法,因此打印出来的就是内存值.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值