黑马程序员技术交流社区

标题: 关于集合的小问题,求帮助 [打印本页]

作者: D.reamJA    时间: 2014-10-23 12:35
标题: 关于集合的小问题,求帮助
  1. public class test1 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 List list1=new ArrayList();
  7.                 list1.add("aa");
  8.                 list1.add("bb");
  9.                 System.out.println(list1);  //[aa, bb]
  10.                
  11.                 List list2=new ArrayList();
  12.                 list2.add(new person("haha"));
  13.                 list2.add(new person("hhe"));
  14.                 list2.add(new person("gaga"));
  15.                 System.out.println(list2);//[person@10dc6b5, person@170bea5, person@f47396]
  16.         }

  17. }

  18. class person
  19. {
  20.         private String name;
  21.         person(String name)
  22.         {
  23.                 this.name=name;
  24.         }
  25. }
复制代码


为什么第一次输出的是 具体内容
而第二次输出的是哈希值?
作者: D.reamJA    时间: 2014-10-23 12:38
本帖最后由 D.reamJA 于 2014-10-23 12:40 编辑

后来想了一下,不知道对不对。List  是 存储对象的集合,在sop(list.toString)的时候是不是会逐个遍历list集合中的对象的toString方法?
person 没有复写tostring,所以会出现哈希值。

作者: 践行渐远    时间: 2014-10-23 12:51
ArrayList是继承了“类 AbstractCollection”的toString()方法,
--------在API文档中-------
类 AbstractCollection
    toString
    public String toString()返回此 collection 的字符串表示形式。该字符串表示形式由 collection 元素的列表组成,这些元素按其迭代器返回的顺序排列,并用方括号 ("[]") 括起来。相邻元素由字符 ", "(逗号加空格)分隔。通过 String.valueOf(Object) 可以将元素转换成字符串。
覆盖:
    类 Object 中的 toString
返回:
    此 collection 的字符串表示形式
----------------------------------------
正如楼主所言,Person类,确实是因为没有覆写toString()方法,所以打印的是哈希值。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2