问一个简单的问题

jacky_yp 2003-10-16 10:49:55
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");
}
}

}
为什么输出的是("Both are not equal")啊?
书上说==判断的是是否引用了同一个对象,equal("")才是比较字符串
但即使把if(m1.equals(m2))换成 if (m1 == m2)还是输出"Both are not equal"啊!
...全文
33 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
show90 2003-10-16
  • 打赏
  • 举报
回复
你必须重写equals()方法,才能达到比较内容的作用
honkyjiang 2003-10-16
  • 打赏
  • 举报
回复
好像hashCode相同就为true
Sysem.out.Println(test1.hashCode() + " ======= " + test2.hashCode());
jacky_yp 2003-10-16
  • 打赏
  • 举报
回复
那String m1 = new String("1");
String m2 = new String("1");
m1.equals(m2)返回true
这里m1和m2地址相同?
danceflash 2003-10-16
  • 打赏
  • 举报
回复
在你的MyClass类中加入:
public int getX() {
return this.x;
}

public boolean equals(MyClass mc) {
if ( this.getX() == mc.getX() )
return true;
return false;
}
danceflash 2003-10-16
  • 打赏
  • 举报
回复
你的MyClass类没有重写equals()方法
因此,沿用Object类的equals()方法
而Object类的equals()方法是单纯比较地址的,跟"=="没有区别
你必须重写equals()方法,才能达到比较内容的作用
Muzhu 2003-10-16
  • 打赏
  • 举报
回复
连等于也一块重写吧!

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧