当我创建一个ArrayList对象并向其中添加其他对象时,打印出ArrayList对象将打印出内部对象的内存引用。但是,如果将String添加到ArrayList对象,则不会打印出String的内存引用,而是显示实际的String值。字符串也是类的权利对象,所以为什么它不打印出字符串内存引用?使用toString打印ArrayList
1
A
回答
2
在Java中Collection
(这是一个ArrayList
延伸的)的toString
方法在它的每个元素的使用String.valueOf
:http://docs.oracle.com/javase/7/docs/api/java/util/AbstractCollection.html#toString()
字符串表示形式集合的元素列表的顺序,他们由其迭代器返回,并用方括号(“[]”)括起来。相邻元素由字符“,”(逗号和空格)分隔。元素被转换为
String.valueOf(Object)
的字符串。
String.valueOf
被简单地抓住物体的toString
值:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#valueOf(java.lang.Object)
如果参数
null
,则字符串等于 “零”;否则,返回obj.toString()
的值。
0
当您打印列表,列表的toString()
方法被调用,这反过来又要求其元素的toString()
方法。
对象,每个类扩展,类有一个toString()
方法,创建您所看到的“内存地址”输出(实际上它不是内存地址,但无论如何)。 String
类重写toString()
方法以返回其内容。
要修复输出“问题”,请在您添加到List的其他对象的类中覆盖toString()
方法,以返回“可读性”的内容。
相关问题
- 1. 使用toString重写和继承来打印arraylist?
- 2. 使用ArrayList打印素数
- 3. 使用的toString打印信息
- 4. 使用toString来打印循环队列
- 5. 使用.toString显示ArrayList
- 6. print toString()不打印ArrayList类成员对象
- 7. 打印的ArrayList
- 8. 打印ArrayList
- 9. toString()方法打印空值
- 10. 使用for-each循环打印ArrayList
- 11. 打印一个ArrayList
- 12. Java打印ArrayList的点数
- 13. JAVA - 问题打印ArrayList
- 14. 打印出一个ArrayList
- 15. 在ArrayList中打印元素
- 16. JSTL打印arrayList元素
- 17. Java ArrayList打印出空的?
- 18. 打印arraylist大小崩溃
- 19. ArrayList打印复制代码
- 20. 在java中打印arraylist
- 21. 打印arraylist没有括号
- 22. ArrayList的不打印出来
- 23. 打印数组 - 覆盖toString()方法
- 24. 阶 - 尝试打印重写toString方法
- 25. StringBuffer toString()不打印任何东西
- 26. 使用对象的链接列表的Java toString打印错误
- 27. 用两个随机数组打印Arraylist
- 28. JList to List toString()对象ArrayList
- 29. ArrayList不能正确打印用户输入(一个类的ArrayList)
- 30. 在读取打印条件时打印ArrayList
'String'重写'Object.toString'。其他对象不要 – Reimeus 2015-04-05 20:48:41
噢,好的,谢谢。这是一个好的,简洁的答案= p – Sygnerical 2015-04-05 20:55:29
除了'String'以外,许多其他类实现'toString()'方法,就像你自己的类一样。并且你看到的调用“native”Object#toString()的数字不是对象的内存引用,而是它的哈希码。 – 2015-04-05 21:00:29