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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 茶念小手 中级黑马   /  2013-8-10 10:18  /  1187 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么编译不能通过啊
  1. int[][] i = new int[2][2];
  2.                 String[] strings = new String[3];
  3.                
  4.                 System.out.println(i.getClass()==strings.getClass());
  5.                 System.out.println(int[].class==String.class);
复制代码

评分

参与人数 1黑马币 +3 收起 理由
以防万一 + 3 神马都是浮云

查看全部评分

5 个回复

倒序浏览
对象类型不可比较啊,你可以单独打印i.getClass()    strings.getClass()    int[].class    String.class  看看他们是什么类型
回复 使用道具 举报
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
回复 使用道具 举报
Incompatible operand types 不匹配的类型。
这两个操作数根本就不是一个类型,不具有比较性。
i.getClass()得到的应该为int[][].class
strings.getClass()得到的应该是String[].class
至于第二个输出语句更不用说了,int[].class和String.class根本就是两个类型的字节码文件,怎么会具有可比性呢。
与君共同进步
回复 使用道具 举报
strings是一个类类型,而int是一个基本数据类型,所以他们不能用双等号比较,但可以通过equalse把他们作为对象进行比较。

我醉了,胡言乱语,不要相信
回复 使用道具 举报
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~


保持队形,谢谢合作
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马