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。求大牛指教!谢谢~ 展开
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。求大牛指教!谢谢~ 展开
6个回答
展开全部
因为在java中Object对象的equals方法默认的实现时:
public boolean equals(Object obj)
{
return(this==obj);
}
所以实际上来说的话,就是System.out.println(b1==b2);的结果了。
public boolean equals(Object obj)
{
return(this==obj);
}
所以实际上来说的话,就是System.out.println(b1==b2);的结果了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你自定义的类,且没有重写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;
}
希望对你有帮助
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;
}
希望对你有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
equals是比较的哈希值,可以在B中重载一个
public boolean equals(Object obj){
if(obj instence of B)
return obj.x==this.x;
return false;
}
public boolean equals(Object obj){
if(obj instence of B)
return obj.x==this.x;
return false;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先去看看我以前回答的一个问题,里面追问最后的解答可能可以给你些许帮助。
http://zhidao.baidu.com/question/433502411.html?oldq=1
其次,object不同于String,如果是new出来的两个对象,那么用equals比较的就不是内容了,而是看这两个object的内存地址了,与String有那么点不同,String是因为有一个字符串缓冲池,为了节约内存而设定的。
http://zhidao.baidu.com/question/433502411.html?oldq=1
其次,object不同于String,如果是new出来的两个对象,那么用equals比较的就不是内容了,而是看这两个object的内存地址了,与String有那么点不同,String是因为有一个字符串缓冲池,为了节约内存而设定的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为b1和b2是两个对象。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询