2016-07-28 22 views
0

我没有覆盖toString()所以我很困惑。是不是像ArrayList这样的对象,因为它们是使用new创建的?为什么System.out.println打印一个数组列表的元素而不是该对象的哈希码?

实施例:

ArrayList <String> arri= new ArrayList(); 
    String one="one"; 
    String two=new String ("two"); 
    arri.add(one); 
    arri.add(two); 
    System.out.println(arri); 

    //output: 
    //[one, two] 

由于

+3

JavaDoc是你的朋友。如果你去['ArrayList'](http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html)并向下滚动方法列表,你会看到它继承了[ ''toString'](http://docs.oracle.com/javase/8/docs/api/java/util/AbstractCollection.html#toString--)来自'AbstractCollection',它处理这个。 –

+1

目前还不清楚你的意思是什么“不是数组的对象,因为它们是使用新创建的......”就Java而言,ArrayList只是另一个类。 –

+0

感谢您的答案。然而为什么我的问题被投下来了?不能初学者在这里问问题?再次感谢! – Bubu

回答

3

ArrayList(不同于阵列)覆盖toString()String覆盖toString(),所以印刷ArrayList<String>显示所有String s表示List的。

4

不必覆盖toString() ...你打电话给它的对象确实如此。你打电话toString()ArrayListArrayList覆盖toString ......或者说,AbstractCollection doesArrayList继承的实现:

返回此collection的字符串表示。字符串表示由集合元素的列表组成,它们按其迭代器返回的顺序包含在方括号中(“[]”)。相邻元素由字符“,”(逗号和空格)分隔。元素被转换为String.valueOf(Object)的字符串。

相关问题