在collection,例如list中,
List<Integer> list = new ArrayList<>(); list.add(1); System.out.println(list); 直接借助于类对象的名字就可以输出正确list ,而数组则必须使用for循环逐个输出,或者是使用Arrays中tostring方法 。 这是为什么?小白,知道这样写,只想知道背后的为什么?已经知道“直接输出类对象时,是调用tostring方法” 类似就是想明白这个直接输出list对象的时候是调用什么??有专业术语名称吗? |
|
|
其实也是输出的list的toString方法,看源码我们可以知道:
可以看到 ArrayList --> AbstractList --> AbstractCollection 而在AbstractCollection类型可以看到重写了 toString 方法
该方法也是循环输出集合中的元素,所以直接打印list就可以看到里面的数据,而至于数组为什么不能呢,byte[] 它只是一种基本数据类型,并不是一个类,就算是Byte[]那也只是一个包装类,里面存的数据也是Byte类型,而不是Byte[],Byte[]只是说明里面存了一组Byte类型的数据而已。 |