黑马程序员技术交流社区
标题:
张孝祥——Java基础加强第24讲中的一个小程序
[打印本页]
作者:
黑马_许芸
时间:
2012-8-28 17:06
标题:
张孝祥——Java基础加强第24讲中的一个小程序
package cn.itcast.day1;
public class ReflectTest6
{
public static void main(String[] args)
{
int[] a1 = new int[3];
int[] a2 = new int[4];
int[][] a3 = new int[2][3];
String[] a4 = new String[3];
System.out.println(a1.getClass() == a2.getClass());
<font color="red">System.out.println(a1.getClass() == a3.getClass()); // 老师写的这个程序没有任何问题,可以运行出来,可是为什么同样的代码我的eclipse编译通不过呢?
System.out.println(a1.getClass() == a4.getClass()); //Incompatible operand types Class<capture#3-of ? extends int[]> and Class<capture#4-of ? extends int[][]></font>
System.out.println(a1.getClass().getName());
}
}
复制代码
作者:
朱烈葵
时间:
2012-8-28 18:05
其实这个问题 我也想过,不知道为什么,只知道是类型不配 一个是int [] 一个是int[][]类型所以不能相等,使用equlas可以 搞不懂
谁能帮忙解释下
作者:
申俊伟
时间:
2012-8-28 18:56
<font color="red">这个删了。
作者:
唐见
时间:
2012-8-28 19:21
我这也一样报错,改成equals吧
作者:
高正新
时间:
2012-8-28 21:53
一个一维数组,一个是二维数组。
当年JAVA版本低,对这方面要求不严。
现在JAVA版本高了,提高了安全性。所以不能直接比较了。。
你把JAVA版本降低一下就不会报错了。。
作者:
张金
时间:
2012-8-28 22:54
受教了,哎呀,菜鸟一枚,路过,路过。
作者:
曹恒业
时间:
2012-8-28 23:12
其实楼主的问题是由于编译器版本进步的原因。
对于数组类型的变量,编译器在编译时,已经知道类型了。也就是说,编译器知道2个类型不一样。所以编译器认为没有比较的必要,就直接报错了。
这个编译错误是 JDK 1.5的新功能,jdk1.5和1.6都会报错,1.4及以下不会报错。
我特意截图给楼主:
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2