java中打印List_java中list和array打印对象的方法

为什么

对于java中的list来说,如果list中的元素是基本类型或者String类型,那么sout(list)是可以直接打印出元素的,如果是对象类型,那么结果是XX@xxxx,原因如下:

对于ArrayList, 我们sout(list)时候,调用的是toString()方法,这个方法在jdk的api方法表中没有找到,那么一定是从父类继承过来的了。

d897d1d47e1349941eb321305f04567e.png

然后我们进到AbstractCollection的toString方法定义中:

2d36f924331e5b16c1c64b3af8ef0d5b.png

我们知道为什么打印list常常会放在[]里面了,然后继续进入String.ValueOf(Object)

6b10bd167b240a187331ab6ac1b3c8c0.png

我们发现最终还是调用list中每个元素的toString()方法打印的,这就是为什么一些基本数据类型和string类型可以打印看出内容了,然后继续跟进去

db283972b2837e601579cf1ae57b1ba8.png

看到这里恍然大悟,为何对象类型的toString常常看到一大段字符串,原来是这样构成的。

怎么做

对于上述问题的追踪,那么我们如何才能详细打印出list中对象各个属性值的信息呢,

1 重写toString方法,输出key-value形式的数据

2 用google开源的lombok,加注释@Data,它自动帮你重写了toString方法。

数组array打印对象的方法:Arrays.toString(array);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值