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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kkopopo 中级黑马   /  2014-2-24 22:14  /  868 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 kkopopo 于 2014-2-24 22:28 编辑
  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() == a4.getClass());
  7. System.out.println(a1.getClass() == a4.getClass());
复制代码

最后两句代码编译不通过  报错类型不匹配
可是在黑马张老师视频中教学过程中编译通过了?
why?
视频中截图代码!  千万别和我说我的JDK是7.0的缘故,或者我用的Eclispe  老师用的是MyEclipse!

我觉得老师的能通过很神奇 因为因为字节码也是对象,是对象就有不同类型
这就好比让一个
Sring s = "abc"
Person p;
sop(s == p);//一样


QQ截图20140224221907.png (19.37 KB, 下载次数: 5)

QQ截图20140224221907.png

3 个回复

倒序浏览
本帖最后由 kkopopo 于 2014-2-24 22:26 编辑

楼层不小心占了,再次编辑把我的疑问汇集到主贴了!
回复 使用道具 举报
我用Myeclipse10 编写的
  1. public class Demo2 {
  2.         public static void main(String[] args) {
  3.                 int[] a = {2,4};
  4.                 String[] str = {"hao","dd"};
  5.                 System.out.println(a.getClass()==str.getClass());
  6.                
  7.         }
  8. }
复制代码

最后的也是错误的下面是错误的原因
Incompatible operand types Class<capture#1-of ? extends int[]> and Class<capture#2-of ? extends String[]>
回复 使用道具 举报
这个问题之前有人问过的,编译器报的错误是Incompatible operand types Class<capture#5-of ? extends int[]> and Class<capture#6-of ? extends String[]>,也就是两边是不同的泛型类型的class类型数据,jdk1.5之后不同泛型类型的同一数据被视为不兼容的内容,所以a1和a3的比较也会报错。
解决办法就是两边之前都加上一个(Object)就可以了。
或者将编译级别改成jdk1.4版本的也可以。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马