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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 武腊福 中级黑马   /  2015-5-17 00:15  /  639 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.      编译并运行以下代码将发生什么?(  )
class MyClass {
    intx;
    MyClass(inti) {
       x= i;
    }
    publicstatic void main(String args[]) {
       MyClassm1 = new MyClass(100);
       MyClassm2 = new MyClass(100);
       if(m1.equals(m2)) {
           System.out.println("Bothare equal");
       }else {
           System.out.println("Bothare not equal");
       }
    }
}
求解!请详细说明原因!解释!!{:3_64:}

4 个回复

倒序浏览
判断哈希值是否相同!
回复 使用道具 举报
  一楼正解。
回复 使用道具 举报
"Bothare not equal"
你用对象m1调用equals()方法,但是你自定义的类中没有重写equals()方法,那么m1调用的就是MyClass的父类Object类中的equals()方法,比较的是地址值
          又因为你的引用变量m1,m2是new出来的,在堆中申请的空间肯定是不同的地址,所以地址值不同,if判断返回的是false,所以执行else中的语句
回复 使用道具 举报
上面代码都定义错了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马