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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜超 高级黑马   /  2013-4-11 15:53  /  1583 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜超 于 2013-4-14 14:37 编辑

比较的是字节码 ,为什么会出现类型不兼容提示呢?

System.out.println(a1.getClass()==a4.getClass());
错误提示:操作数类型 Class<capture#8-of ? extends int[]> 和 Class<capture#9-of ? extends String[]> 不兼容
System.out.println(a1.getClass()==a3.getClass());
错误提示:操作数类型 Class<capture#10-of ? extends int[]> 和 Class<capture#11-of ? extends int[][]> 不兼容

1.jpg (43.27 KB, 下载次数: 106)

1.jpg

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

倒序浏览
int [] a1= new int [3];  是一个int类型的一维数组,然后其中有3个元素。
int[][]a2 = new int[2][3]; 是一个int类型的二维数组,其中的元素为2个包含3个元素的数组。
String[] a4 = new String[3]; 是一个String类型的一维数组,其中有3个元素;

一维数组和二维数组之间本身就是没有可比性的。
关于a1为什么不等于a4我揣测是因为数据类型不一样,所以没有可比性。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
杨玄文 发表于 2013-4-11 19:31
int [] a1= new int [3];  是一个int类型的一维数组,然后其中有3个元素。
int[][]a2 = new int[2][3]; 是 ...

a1.getClass()==a3.getClass()
a1.getClass()==a4.getClass()
这两个比较是字节码,比较字节码和类型没有关系吧,
我这个是按视频里敲得,老师的没问题,我的编译不过去,所以就郁闷了
回复 使用道具 举报
杜超 发表于 2013-4-11 20:33
a1.getClass()==a3.getClass()
a1.getClass()==a4.getClass()
这两个比较是字节码,比较字节码和类型没有 ...

老师那个也没编译过去,直接编译器就报错。

我专门翻回去看过的。
回复 使用道具 举报
杨玄文 发表于 2013-4-12 06:18
老师那个也没编译过去,直接编译器就报错。

我专门翻回去看过的。

刚开始是没编过去,开始老师直接对象比较了,System.out.println(a1==a4);System.out.println(a1.=a3);,这比较的是对象,不是一个类型,编译不过去,后来才加上的getClass,比较的字节码,才编译过去的

你看下面的截图,这是老师后来改的,


原图.jpg (217.07 KB, 下载次数: 109)

视频截图

视频截图

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马