为什么System.out.println打印arraylist的元素而不是对象的hashcode?

时间:2016-07-28 07:12:13

标签: java arraylist

我没有覆盖toString()所以我很困惑。不是ArrayList像数组这样的对象,因为它们是使用new创建的吗?

示例:

    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]

由于

2 个答案:

答案 0 :(得分:4)

不必覆盖toString() ...您正在调用它的对象。您在toString()上呼叫ArrayListArrayList覆盖toString ...或者更确切地说,AbstractCollection doesArrayList继承实施:

  

返回此集合的字符串表示形式。字符串表示由一个集合元素的列表组成,它们按迭代器返回的顺序排列,用方括号括起来(&#34; []&#34;)。相邻元素由字符&#34;,&#34;分隔。 (逗号和空格)。元素按String.valueOf(Object)转换为字符串。

答案 1 :(得分:3)

ArrayList(与数组不同)会覆盖toString()String覆盖toString(),因此打印ArrayList<String>会显示String的所有List e.preventDefault();