Collection c = new ArrayList();
c.add(new String("aaa"));
c.add(new String("bbb"));
c.add(new String("ccc"));
for(Object o : c) {
System.out.print(o + " ");
}为什么可以直接打印object对象得到的结果就是普通的string类型,而不是那种类名加@什么的?
好像是重写toString方法,没搞明白,希望可以详细解释一下,谢谢
c.add(new String("aaa"));
c.add(new String("bbb"));
c.add(new String("ccc"));
for(Object o : c) {
System.out.print(o + " ");
}为什么可以直接打印object对象得到的结果就是普通的string类型,而不是那种类名加@什么的?
好像是重写toString方法,没搞明白,希望可以详细解释一下,谢谢
System.out.print(o + " ");
}
==
Object o = null;
for(int i=0;i<c.size();i++){
o = c.get(i);
System.out.print(o + " ");}
这样打印肯定可以得到list里面的值了
楼主可以看一下:http://blog.csdn.net/jtchan/article/details/6617573
我那样也是可以得到值的,我的问题是怎么重写 toString方法的啊??
write(String.valueOf(obj));
}
print方法。如果你传一个object类型的数据。后台会先转换成String
哪里重写了toString()方法的
o + ""就相当于将object强制转型为String
其中c即为一个ArrayList对象;接下来:c.add(new String("aaa"));
你在c中加入的是字符串元素,同时ArrayList类型是Object的子类型,故for(Object o : c)这个语句遍历的是c中的各个元素,即为String类型。
如果存放的是其他类型,必须重写toString方法,否则就会打印出类名加@哈西值
你把string转为object,但其方法还是调用string里面的tostring(),楼主可用下面的语句去试试
System.out.println(((Object)(new String("我是string类"))).toString());