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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

编译并运行以下代码将发生什么?(  ) class MyClass {  int x;  
MyClass(int i) {   x = i;  }
  public static void main(String args[]) {   
MyClass m1 = new MyClass(100);  
MyClass m2 = new MyClass(100);
  if (m1.equals(m2)) {   
System.out.println("Both are equal");   }
else {     System.out.println("Both are not equal");   }
}
}  A. 代码编译时报出错误提示信息“equals() 方法未定义”  B. 编译通过,抛出运行期异常. C. 输出Both are equal. D. 输出Both are not equal

2 个回复

倒序浏览
答案选d
Both are not equal
类是引用型数据变量,在栈内存中存储的是对象的地址值,而不是具体的数值。
在这个程序中,虽然m1和m2都把100这个int类型的值传给了MyClass这个类的构造函数,但是
在if语句中比较的并不是两个int型的100,而是m1 和 m2的地址值。


MyClass m1 = new MyClass(100);  
MyClass m2 = new MyClass(100);

这两句后面加上
        System.out.println(m1);
        System.out.println(m2);

之后,程序运行的结果是:


这样你就更清晰的明白if语句中的m1和m2到底是什么了
回复 使用道具 举报
楼上正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马