黑马程序员技术交流社区
标题:
反射应用:数组中Arrays.asList方法
[打印本页]
作者:
唐辉辉
时间:
2012-6-22 23:06
标题:
反射应用:数组中Arrays.asList方法
本帖最后由 唐辉辉 于 2012-6-22 23:16 编辑
在听张老师的反射发现有点迷糊的地方,现在搞明白了。贴出来看看有没有其它的意见:
import java.lang.reflect.*;
import java.util.Arrays;
public class ReflectArray {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a1 = new int[]{1,3,5};
int[] a2 = new int[5];
int[][] a3 = new int[][]{{3,4,5,2},{1,2,3,5},{1,2,3,5}};
String[] a4 = new String[]{"ab","de","fg"};
System.out.println(a1);
Object obj1 = a1;
System.out.println(obj1);
//Object[] obj2 = a2;
Object[] obj3 = a3;
System.out.println(obj3);
Object[] obj4 = a4;
System.out.println(obj4);
System.out.println(Arrays.asList(a1));
System.out.println(Arrays.asList(a3));
System.out.println(Arrays.asList(a4));
}
}
复制代码
Object[] obj3 = a3;
//由于a3是一个二维数组,所以Object[ ] obj3 = a3;是正确的。可以理解为这个数组里装的是Object,而二维数组中的数组就是Object的类型。
System.out.println(Arrays.asList(a3));
//老师说:基本类型的数组调用jdk1.5的asList(T... a)方法,其它类型就会调用jdk1.4的asList(Object[] obj)。此处的输出结果为:
[[I@61de33, [I@14318bb, [I@ca0b6] 。 从结果看显然是调用的jdk1.4的。之前一直郁闷为什么会输出的是hashcode值,而下面的却能输出具体的值。想了好才发现,这跟toString方法有关系。a4中数组的元素为String,它的toString()方法返回的是对象本身。而数组的toString()方法返回的是hashCode值。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2