使用toString打印出ArrayList

时间:2015-04-05 20:47:26

标签: java string arraylist tostring

当我创建一个ArrayList对象并向其添加其他对象时,打印出ArrayList对象将打印出内部对象的内存引用。但是,如果我将String添加到ArrayList对象,它将不会打印出String的内存引用,而是打印出实际的String值。 String也是类权限的对象,那为什么不打印出String内存引用呢?

3 个答案:

答案 0 :(得分:2)

Java中toString的{​​{1}}方法(Collection扩展的方法)在每个元素上使用ArrayListhttp://docs.oracle.com/javase/7/docs/api/java/util/AbstractCollection.html#toString()

  

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

String.valueOf(Object)只是抓取对象的String.valueOf值:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#valueOf(java.lang.Object)

  

如果参数为toString,则字符串等于" null&#34 ;;否则,返回null的值。

答案 1 :(得分:0)

当您打印列表时,会调用列表的toString()方法,该方法会调用其元素的toString()方法。

每个类都扩展的Object,类有一个toString()方法,用于创建"内存地址"输出你看到的(实际上它不是内存地址,但无论如何)。 String类会覆盖toString()方法以返回其内容。

要修复输出"问题",请覆盖您要添加到列表中的其他对象的类中的toString()方法,以返回“#34;人类可读&#34 34。

答案 2 :(得分:0)

Object 类的 toString() 方法被 Class AbstractCollection 覆盖。 ArrayList 扩展 AbstractList 和 AbstractList 扩展 AbstractCollection。方法细节在下面提到。

公共字符串 toString() 返回此集合的字符串表示形式。字符串表示由集合元素的列表组成,按其迭代器返回的顺序排列,括在方括号(“[]”)中。相邻元素由字符“,”(逗号和空格)分隔。元素通过 String.valueOf(Object) 转换为字符串。

覆盖: 类 Object 中的 toString

返回: 此集合的字符串表示