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"不是代表集合变量首地址吗(跟数组一样:数组名就是数组首地址),但是为什么打印出来是集合每个元素的首地址?谢谢回答! 展开
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"不是代表集合变量首地址吗(跟数组一样:数组名就是数组首地址),但是为什么打印出来是集合每个元素的首地址?谢谢回答! 展开
3个回答
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(", ");
}
}
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,不太懂您的代码,能再说清楚一点吗?谢谢!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你写的商品类没有重写toString
而为什么打印出来的地址,因为,你打印的时候默认调用商品类的父类Object类 而且打印调用的方法toString方法也是父类的 因此返回的是内存地址
而为什么打印出来的地址,因为,你打印的时候默认调用商品类的父类Object类 而且打印调用的方法toString方法也是父类的 因此返回的是内存地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询