黑马程序员技术交流社区

标题: 基础加强-24-数组与Object的关系及其反射类型? [打印本页]

作者: 騛鹏    时间: 2013-4-3 17:41
标题: 基础加强-24-数组与Object的关系及其反射类型?
本帖最后由 騛鹏 于 2013-4-4 00:38 编辑





为何cmd中 无法比较?
作者: 张源锋    时间: 2013-4-3 18:05
一维数组和二维数组不是同一类型的,不能比较,下面是测试代码你可以自己入到main方法里测试下下
  1.         @Test
  2.         public void  test7 (){
  3.                 int [] a = new int []{1,2,3,};
  4.                 int [][]b = new int[2][3];
  5.                 int [] c = new int []{1,4,3,};
  6.                 System.out.println(a.getClass()+" | "+b.getClass()+" | "+c.getClass());
  7.                 boolean m = a.getClass().isInstance(b);
  8.                 boolean n = a.getClass().isInstance(c);
  9.                 System.out.println(m+"|"+n);
  10.         }
复制代码
结果
  1. class [I | class [[I | class [I
  2. false|true
复制代码

作者: 我手心里的宝    时间: 2013-4-3 18:07
这个单是在cmd中无法比较 这样不同类型的Class类型是不能做比较的
这两个你做比较是不兼容的操作类型
不同的.class对象时不能做比较的 这样编译器是不能通过
例如:String.class == Data.class
你这样做比较毫无意义,他们两个本来就是不同的对象,因而会报错
作者: 騛鹏    时间: 2013-4-3 18:12
无奈№追夜 发表于 2013-4-3 18:05
一维数组和二维数组不是同一类型的,不能比较,下面是测试代码你可以自己入到main方法里测试下下结果 ...

这是 比较 字节码啊 就是字节码是否相同
作者: 騛鹏    时间: 2013-4-3 18:15
我手心里的宝 发表于 2013-4-3 18:07
这个单是在cmd中无法比较 这样不同类型的Class类型是不能做比较的
这两个你做比较是不兼容的操作类型
不同 ...

这是 比较 字节码啊 就是字节码是否相同


eclipse中可以比较啊
作者: 你我擦肩而过    时间: 2013-4-3 23:27
騛鹏 发表于 2013-4-3 18:15
这是 比较 字节码啊 就是字节码是否相同

cmd中不是同一个类型啊,再看EClipse的代码和你cmd贴的代码是不是有区别?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2