黑马程序员技术交流社区

标题: 数组问题 [打印本页]

作者: zhkqy    时间: 2013-12-10 10:32
标题: 数组问题

  1. int[] a1 = new int[3];
  2.   int[] a2 = new int[4];
  3.   int[][] a3 = new int[2][3];
  4.   String[] a4 = new String[3];
  5.   System.out.println(a1.getClass() == a2.getClass());
  6.   System.out.println(a1.getClass() == a3.getClass());//出错
  7.   System.out.println(a1.getClass() == a4.getClass());//出错
复制代码

提示为Incompatible operand types Class<capture#3-of ? extends int[]> and Class<capture#4-of ? extends int[][]>
这是为什么啊?
作者: 末末    时间: 2013-12-10 10:51
你这是在比较两个对象是不是属于同一个类的字节码,这不是明显的错吗,一个是一维数组,一个是二维数组,一个是String 类型的三个不同的类,字节码就不 一样啊,当然会报错了,a1.getClass==a2.getClass没报错是因为他们以属于同一个类的字节码
作者: Diaraelo    时间: 2013-12-10 11:14
我也很疑惑这个方法的作用,我知道getClass()只能用于比较相同类或者其子类对象。用来判断他们是否相同,但是如果我需要判断2个没有什么关系的类或者东西的时候这个方法就会直接报错。所以应该有其他方法来实现楼主要的功能,所以我也想问问是什么方法
作者: 雪飘舞    时间: 2013-12-10 11:23
a1是int类型的一维数组,a3是int类型的二维数组,他们是不能进行比较的
a4是String类型的一维数组,它与a1也不能进行比较
a1、a2属于同种类型
a1、a3、a4三者之间属于不同类型




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