java 中关于equals的问题

publicclassTestEquals{publicstaticvoidmain(Stringargs[]){Catc1=newCat(1,2,3);Catc2=ne... public class TestEquals {
public static void main(String args[]){
Cat c1 = new Cat(1, 2, 3);
Cat c2 = new Cat(1, 2, 3);
System.out.println(c1 == c2);
System.out.println(c1.equals(c2));

// String s1 = new String("hello");
// String s2 = new String("hello");
// System.out.println(s1 == s2);
// System.out.println(s1.equals(s2));
}
}

class Cat{
int color;
int height, weight;
public Cat(int color , int height, int weight){
this.color = color;
this.height = height;
this.weight = weight;
}
public boolean equals(Object obj){
if(obj == null) return false;
else{
if(obj instanceof Cat) {
Cat c = (Cat)obj;
if(c.color == this.color && c.height == this.height && c.weight == this.weight);
}
}
return true;
}
}
下面用的 equals 语句怎么不执行啊?
if (obj instanceof Cat) {
Cat c = (Cat) obj;
可是在我这里这两行前者报Incompatible conditional operand types Object and Cat后者报错Cannot cast from Object to Cat
展开
 我来答
纵标师s
2010-12-18 · TA获得超过685个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:218万
展开全部
这是API里面String类的源码:String类的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;
}

可以看到String类的equals()方法对内容或引用相同返回的结果都是true.关于equals()方法和hashCode()方法楼主可以自行查阅API或者是相关文档了解,在此不做赘述。
偶丨尔
2010-12-17 · TA获得超过224个赞
知道答主
回答量:110
采纳率:0%
帮助的人:95.6万
展开全部
哪个equals没执行啊?
我试了,都可以啊,包括注释掉的。
运行结果:
false
true
false
true
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jorjimmy
2010-12-17
知道答主
回答量:18
采纳率:0%
帮助的人:2.6万
展开全部
你所说的下面用的equals是指哪一句啊?
==用于比较两个对象的内存地址是否相等,相等返回true,否则返回false
equals用于比较两个对象的内容是否相等,相等返回true,否则返回false
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Big嘴
2010-12-17 · TA获得超过4097个赞
知道小有建树答主
回答量:697
采纳率:50%
帮助的人:628万
展开全部
写的代码应该没什么问题吧。
还有以后如果有多个判断语句你可以用
if(){
......
}else if(){
.......
}
这种方法,更为直观
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e993b50
2010-12-17
知道答主
回答量:8
采纳率:0%
帮助的人:3.8万
展开全部
检验了 你重写的equals有执行。
结果为
false
true
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式