黑马程序员技术交流社区
标题:
集合问题
[打印本页]
作者:
高双武
时间:
2011-11-15 17:17
标题:
集合问题
下面这个程序中,al和arr都是引用类型的,为什么一个输出结果是引用地址,一个输出结果是存的内容?
代码如下
package execisetest;
import java.util.*;
public class CollectionTest {
public static void main(String [] args){
ArrayList al=new ArrayList();
al.add("jacaa");
al.add("fsf");
al.add("fsfaf");
sop(al);
int [] arr=new int[]{2,2,3,6};
sop(arr);
}
public static void sop(Object obj){
System.out.println(obj);
}
}
作者:
葛雨龙
时间:
2011-11-15 17:20
其实默认输出的是对象.toString()方法, arr这个方法里面是输出里面元素,而al输出的是[I@de6ced
作者:
骚灵小情歌
时间:
2011-11-15 17:37
呃。我只知道要想打印数组,每次都是遍历.
作者:
zhanghua
时间:
2011-11-15 18:10
ArrayList()类本身默认重写了toString()方法,而存储的对象是String,而String也重写了toString()方法,
而下面的数组并没有重写toString()方法,则会一直向上调用,直到Object.toString()方法,这个方法默认就是打印类名+@+十六进制的内存地址
这是ArrayList继续的源代码
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(", ");
}
}
作者:
李印东老师
时间:
2011-11-15 19:16
八大基本类型的一维数组可以被当作Object类型使用,不能当作Object[]类型使用。去看一下张老师的数组与Object的关系及其反射类型,就应该理解透了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2