A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© D.reamJA 高级黑马   /  2014-10-23 12:35  /  1019 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }
复制代码


为什么第一次输出的是 具体内容
而第二次输出的是哈希值?

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

2 个回复

正序浏览
ArrayList是继承了“类 AbstractCollection”的toString()方法,
--------在API文档中-------
类 AbstractCollection
    toString
    public String toString()返回此 collection 的字符串表示形式。该字符串表示形式由 collection 元素的列表组成,这些元素按其迭代器返回的顺序排列,并用方括号 ("[]") 括起来。相邻元素由字符 ", "(逗号加空格)分隔。通过 String.valueOf(Object) 可以将元素转换成字符串。
覆盖:
    类 Object 中的 toString
返回:
    此 collection 的字符串表示形式
----------------------------------------
正如楼主所言,Person类,确实是因为没有覆写toString()方法,所以打印的是哈希值。
回复 使用道具 举报 1 0
本帖最后由 D.reamJA 于 2014-10-23 12:40 编辑

后来想了一下,不知道对不对。List  是 存储对象的集合,在sop(list.toString)的时候是不是会逐个遍历list集合中的对象的toString方法?
person 没有复写tostring,所以会出现哈希值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马