Java中集合对象名是集合的首地址吗?为什么打印出来是集合每个元素的首地址?

ArrayList<Goods>array=newArrayList<Goods>();//Goodss是商品类Goodsg1=newGoods();Goodsg2=ne... ArrayList<Goods> array = new ArrayList<Goods>();//Goodss是商品类
Goods g1 = new Goods();
Goods g2 = new Goods();
.......//g1,g2赋值过程省略
array.add(g1);
array.add(g2);
System.out.println(array);
打印结果是:
[Goods@1a61172, Goods@1c391c3]
提问:
集合对象名"array"不是代表集合变量首地址吗(跟数组一样:数组名就是数组首地址),但是为什么打印出来是集合每个元素的首地址?谢谢回答!
展开
 我来答
Yogurt酸奶哥
2017-11-06
知道答主
回答量:5
采纳率:0%
帮助的人:3737
展开全部
是这样的 我来告诉你 ,定义了一个ArrayList的容器array 然后这个容器里只能放Goods类型的变量 GOOds这个类里面的对象
如果你不使用泛型 就会调用ArrayList他爷爷的toString 因为ArrayList没有 他爸爸也没有 只能他爷爷用toString
但是你使用泛型了 就会调用GOODs里面的toString 所以你只需要在GOODs里面覆盖一个toSTring方法就行
育知同创教育
2017-06-15 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
以ArrayList为例
ArrayList的父类AbstractList的父类AbstractCollection里面有实现toString()

public String toString() {
Iterator<E> i = iterator();
if (!i.hasNext())
return "[]";

StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = i.next();
sb.append(e == this ? "(this Collection)" : e);
if (!i.hasNext())
return sb.append(']').toString();
sb.append(", ");
}
}
追问
初学Java,不太懂您的代码,能再说清楚一点吗?谢谢!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangweiwei311
2018-07-29
知道答主
回答量:5
采纳率:0%
帮助的人:4903
展开全部
因为你写的商品类没有重写toString
而为什么打印出来的地址,因为,你打印的时候默认调用商品类的父类Object类 而且打印调用的方法toString方法也是父类的 因此返回的是内存地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式