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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王德云 金牌黑马   /  2011-12-6 14:04  /  1948 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王德云 于 2011-12-7 09:28 编辑
  1. import java.lang.reflect.Method;
  2. public class Test {
  3.         public static void main(String[] args) throws Exception {
  4.                 int [] a1=new int[3];
  5.                 int [] a2=new int[4];
  6.                 int[][] a3=new int[2][3];
  7.                 String [] a4=new String[3];
  8.                 System.out.println(a1.getClass() == a2.getClass());
  9.                 //加上下面两行代码,编译器就会报错
  10.                 System.out.println(a1.getClass() == a4.getClass());
  11.                 System.out.println(a1.getClass() == a3.getClass());
  12.                 System.out.println(a1.getClass().getName());
  13.         }
  14. }
复制代码
上述代码?与视频中张老师代码一模一样,为什么加上下面两行代码就报错,但张老师的就是编译没有问题。而且我的编译器都是1.6的,jdk用的也是1.6的.

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

5 个回复

倒序浏览
a1是int类型的,a4是string类型的
a1是一维数组,a3是二维数组   
不同类型的当然不能比较了,一维数组也不能和二维数组比较,都需要转化
回复 使用道具 举报
可以比较呀,返回false啊,张老师视频上都编译结果出来了!
回复 使用道具 举报
a1.getClass()是int数组类型的字节码,a4.getClass())是字符串数组类型的字节码,两者的类型不同,a1.getClass() 与a3.getClass()也是同样的道理。
这是编译报错,你用的比以前的东西高级了,后面两个明显因为是类型都不对,答案是false的就直接编译就报错了
再说明白点,编译器版本高了聪明了,觉得这种问题低级所以不想让你编译通过了

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
编译器提示的是 incompatible operand types error , 意思即为类型不兼容,a1 与 a3 数组维度不同,a1 与 a4 类型不同 ,因此类型都不兼容。
张老师的程序能编译通过,应该是IDE的编译器版本较低, 编译器版本可以通过IDE查看: Window - > Preferences -> Compiler

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

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