A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐辉辉 中级黑马   /  2012-6-22 23:06  /  1268 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐辉辉 于 2012-6-22 23:16 编辑

在听张老师的反射发现有点迷糊的地方,现在搞明白了。贴出来看看有没有其它的意见:

  1. import java.lang.reflect.*;
  2. import java.util.Arrays;

  3. public class ReflectArray {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {
  8.                 // TODO Auto-generated method stub
  9.                 int[] a1 = new int[]{1,3,5};
  10.                 int[] a2 = new int[5];
  11.                 int[][] a3 = new int[][]{{3,4,5,2},{1,2,3,5},{1,2,3,5}};
  12.                 String[] a4 = new String[]{"ab","de","fg"};
  13.                
  14.                 System.out.println(a1);
  15.                 Object obj1 = a1;
  16.                 System.out.println(obj1);
  17.                 //Object[] obj2 = a2;
  18.                 Object[] obj3 = a3;      
  19.                 System.out.println(obj3);
  20.                 Object[] obj4 = a4;
  21.                 System.out.println(obj4);
  22.                
  23.                 System.out.println(Arrays.asList(a1));
  24.                 System.out.println(Arrays.asList(a3));
  25.                 System.out.println(Arrays.asList(a4));
  26.         }
  27. }
复制代码
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值。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马