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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 湛添友 中级黑马   /  2014-4-30 18:50  /  771 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int[] a1=new int[3];
                int[] a2=new int[4];
                int[][]a3=new int[2][4];
                String[] a4=new String[]{"d","h","d","g"};
                System.out.println(a1.getClass() == a2.getClass());
                //System.out.println(a1.getClass() == a3.getClass());
                //System.out.println(a1.getClass() == a4.getClass());
为什么这两行编译不同过啊?  返回的不应该是Class吗?  怎么会类型不兼容呢?

4 个回复

倒序浏览
本帖最后由 宋超2356 于 2014-4-30 19:08 编辑

  1. public class Test1 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {

  6.                 int[] a1=new int[3];
  7.         int[] a2=new int[4];
  8.         int[][]a3=new int[2][4];
  9.         String[] a4=new String[]{"d","h","d","g"};
  10.         System.out.println(a1.getClass() == a2.getClass());
  11.         System.out.println(a1.getClass().equals(a3.getClass()) );
  12.         System.out.println(a1.getClass().equals(a4.getClass()) );
  13.         }

  14. }
复制代码


这里当然不能用==这种来比较,用equals,比如System.out.println(a1.getClass());打印出来就是class [I   (表示class,数组,int类型),所以直接的==应该是不能比较的,类型也不一样。equals方法应该是重写过,可以进行比较
回复 使用道具 举报
宋超2356 发表于 2014-4-30 19:03
这里当然不能用==这种来比较,用equals,比如System.out.println(a1.getClass());打印出来就是[/backco ...

为什么 张孝祥老师的 java高新技术里的 数组反射里 可以这样写???
回复 使用道具 举报
湛添友 发表于 2014-4-30 19:22
为什么 张孝祥老师的 java高新技术里的 数组反射里 可以这样写???

额,你确定你仔仔细细的看视频了么?我记得视频里是写出来报错,然后讲解为何报错,然后又注释掉了的吧,记不清了,但是终归是不能用==比较的
回复 使用道具 举报
宋超2356 发表于 2014-4-30 21:05
额,你确定你仔仔细细的看视频了么?我记得视频里是写出来报错,然后讲解为何报错,然后又注释掉了的吧, ...

是啊 今天看的 编译通过 结果是false
百分之百确定啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马