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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林发明 中级黑马   /  2014-3-30 11:33  /  1023 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. //数组与Object的关系
  2.                 int [] a1 = new int[]{1,2,3};
  3.                 int [] a4 = new int[5];
  4.                 int [][] a2 = new int[2][3];
  5.                 String [] a3 = new String[]{"adf"};
  6.                 System.out.println(a1.getClass() == a4.getClass());
  7.                 System.out.println(a1.getClass() == a2.getClass());//为什么这一行提示错误呢?我仅仅是判断字节码是否相同啊
复制代码


QQ截图20140330113238.png (95.78 KB, 下载次数: 4)

QQ截图20140330113238.png

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

3 个回复

倒序浏览
其实这个问题就相当于String.class==Integer.class一样,在数组中一维数组和多维数组不是一种类型的,不能放到一起去比较

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
java1.5以前是可以的,java1.5以引用泛型 现在的Class是一个泛型类。

  a1.getClass() 的返回结果类型是 Class<? extends int[]>   
  a2.getClass() 的返回结果类型是 Class<? extends int[][]>   
  类型不同不可以用==
//解决方法。
  System.out.println(a1.getClass().getName() == a2.getClass().getName());
  System.out.println((Class)a1.getClass() == (Class)a2.getClass());

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
类型和维度相同的数组他们的字节码文件相同。
==表示两个运算数是否相等
1.5之后如果比较的两个数不是同一类型则会报错
a1的类型是int[].class
a2是int[][].class,类型不匹配

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马