黑马程序员技术交流社区
标题:
对比字节码问题,
[打印本页]
作者:
茶念小手
时间:
2013-8-10 10:18
标题:
对比字节码问题,
为什么编译不能通过啊
int[][] i = new int[2][2];
String[] strings = new String[3];
System.out.println(i.getClass()==strings.getClass());
System.out.println(int[].class==String.class);
复制代码
作者:
李江
时间:
2013-8-10 11:28
对象类型不可比较啊,你可以单独打印i.getClass() strings.getClass() int[].class String.class 看看他们是什么类型
作者:
钟佩桓
时间:
2013-8-10 12:31
System.out.println(i.getClass()==strings.getClass()); i是一个二位数组 Strings是一个一维数组 维数不一样 编译器会直接报错 就算维数一样 还要看数组的元素个数是否一样 具有相同维数和元素类型的数组属于同一个类型,即具有相同的Class实例对象。
int[] 和 String的父类都是Object 所以比较父类的字节码可以 但是直接比较不行 编译器会报错 一个int型数组和String比较字节码是不行的 这样写编译器不会报错
System.out.println(int[].class.getSuperclass() == String.class.getSuperclass()); 结果为true
作者:
masterV
时间:
2013-8-12 01:11
Incompatible operand types 不匹配的类型。
这两个操作数根本就不是一个类型,不具有比较性。
i.getClass()得到的应该为int[][].class
strings.getClass()得到的应该是String[].class
至于第二个输出语句更不用说了,int[].class和String.class根本就是两个类型的字节码文件,怎么会具有可比性呢。
与君共同进步
作者:
吴光新
时间:
2013-8-12 02:26
strings是一个类类型,而int是一个基本数据类型,所以他们不能用双等号比较,但可以通过equalse把他们作为对象进行比较。
我醉了,胡言乱语,不要相信
作者:
以防万一
时间:
2013-8-13 22:21
亲,如问题已解决请将分类的未解决改为已解决。
以后的问题贴也要及时更改分类哦~
保持队形,谢谢合作
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2