java中关于==和equals判断

classTwoObjects{publicstaticvoidmain(String[]args){Bb1=newB();Bb2=newB();System.out.p... class TwoObjects {
public static void main(String[] args) {
B b1=new B();
B b2=new B();
System.out.println(b1==b2);
System.out.println(b1!=b2);
System.out.println(b1.equals(b2)); //flase
}

}
class B{
int x;
B(){x=1;}
}

我不太明白为什么这句equals返回的是flase。求大牛指教!谢谢~
展开
 我来答
幽冥神者
2013-01-07 · TA获得超过3213个赞
知道大有可为答主
回答量:1953
采纳率:50%
帮助的人:1790万
展开全部
自定义的类由于没有重写equals方法,所以调用的是从Object继承的equals方法
默认的equals方法也是用==来比较的,所以是false
Apple林
2013-01-07 · TA获得超过2093个赞
知道小有建树答主
回答量:895
采纳率:66%
帮助的人:554万
展开全部
因为在java中Object对象的equals方法默认的实现时:
public boolean equals(Object obj)
{
return(this==obj);
}
所以实际上来说的话,就是System.out.println(b1==b2);的结果了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
PandaDream
2013-01-07 · 超过25用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:64.9万
展开全部
你自定义的类,且没有重写object的equals方法,所有调用的是object的equals方法,下边这是object类中equals方法的代码:
public boolean equals(Object obj) {
return (this == obj);
}
所以它的结果和==是一样的,如果你想改些这个方法的话:下边是String类中equals中的代码
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
希望对你有帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
起啥名c9
2013-01-07 · TA获得超过129个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:123万
展开全部
equals是比较的哈希值,可以在B中重载一个

public boolean equals(Object obj){
if(obj instence of B)
return obj.x==this.x;

return false;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
enolong
2013-01-07 · TA获得超过1174个赞
知道小有建树答主
回答量:590
采纳率:100%
帮助的人:376万
展开全部
先去看看我以前回答的一个问题,里面追问最后的解答可能可以给你些许帮助。
http://zhidao.baidu.com/question/433502411.html?oldq=1

其次,object不同于String,如果是new出来的两个对象,那么用equals比较的就不是内容了,而是看这两个object的内存地址了,与String有那么点不同,String是因为有一个字符串缓冲池,为了节约内存而设定的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无胜音
2013-01-07 · TA获得超过262个赞
知道小有建树答主
回答量:225
采纳率:0%
帮助的人:177万
展开全部
因为b1和b2是两个对象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式