黑马程序员技术交流社区

标题: 下面代码 [打印本页]

作者: 武腊福    时间: 2015-5-17 00:15
标题: 下面代码
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:}

作者: jiangwenjun    时间: 2015-5-17 02:44
判断哈希值是否相同!
作者: 冷雨敲窗被未温    时间: 2015-5-17 08:11
  一楼正解。
作者: 过路人    时间: 2015-5-17 09:36
"Bothare not equal"
你用对象m1调用equals()方法,但是你自定义的类中没有重写equals()方法,那么m1调用的就是MyClass的父类Object类中的equals()方法,比较的是地址值
          又因为你的引用变量m1,m2是new出来的,在堆中申请的空间肯定是不同的地址,所以地址值不同,if判断返回的是false,所以执行else中的语句
作者: Im海洋    时间: 2015-5-17 09:39
上面代码都定义错了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2