黑马程序员技术交流社区
标题: 下面代码 [打印本页]
作者: 武腊福 时间: 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 |