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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 doevents 于 2013-10-5 19:43 编辑

为什么代码的Equals下出错,而在MyEclipse下却正常?{:soso_e134:}
  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());
  System.out.println(a1.getClass()==a3.getClass());
  System.out.println(a1.getClass()==a4.getClass());

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

5 个回复

倒序浏览
哥么,这个问题要问你自己,你是否建立的是对应工程项目?
回复 使用道具 举报
本帖最后由 陈钦涛 于 2013-10-3 20:37 编辑

你是想说为什么代码在Eclipse下会出错,MyEclipse下不会报错是吧。首先,你三句对Class对象比较的代码第一句结果是true,下面两句是false,因为是不同的字节码,在Eclipse下你输入后面两句比较的代码还没点运行它就会自动提示你它们是不同份的字节码它们是比不了的,显示红叉给出错误提示,没有提示false。MyEclipse下则在你点运行后会提示你false,在你写代码时候是没显示红叉的。这是不同的IDE对待问题的不同提示方式。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
陈钦涛 发表于 2013-10-3 20:34
你是想说为什么代码在Eclipse下会出错,MyEclipse下不会报错是吧。首先,你三句对Class对象比较的代码第一 ...

是在Editplus下会出错
回复 使用道具 举报
本帖最后由 陈钦涛 于 2013-10-3 22:08 编辑
doevents 发表于 2013-10-3 20:39
是在Editplus下会出错

道理跟在Eclipse和MyEclipse下的情况是一样的,这是工具的问题
回复 使用道具 举报
这个是java编译器的一个bug,在1.4版本的时候是可以编译通过的,你现在使用的应该是1.6版的吧

下面我给你两种解决方案:

方案一、使用equals()
  1.         public static void main(String[] args)
  2.         {
  3.           int[] a1=new int[3];
  4.           int[] a2=new int[4];
  5.           int[][] a3=new int[2][3];
  6.           String[] a4=new String[3];          

  7.            System.out.println(a1.getClass()==a2.getClass());
  8.            System.out.println(a1.getClass().equals(a3.getClass()));
  9.            System.out.println(a1.getClass().equals(a4.getClass()));
  10.         }

  11. 运行结果:
  12. true
  13. false
  14. false
复制代码
方案二、类型强转Object
  1. public static void main(String[] args)
  2.         {
  3.           int[] a1=new int[3];
  4.           int[] a2=new int[4];
  5.           int[][] a3=new int[2][3];
  6.           String[] a4=new String[3];
  7.           
  8.            System.out.println(a1.getClass()==a2.getClass());
  9.            System.out.println((Object)a1.getClass()==(Object)(a3.getClass()));
  10.            System.out.println((Object)a1.getClass()==(Object)(a4.getClass()));
  11.         }

  12. 运行结果:
  13. true
  14. false
  15. false
复制代码
希望能够帮助到你,(*^__^*) 嘻嘻~~~~~~~~~~~~~~




评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

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