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 展开
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 展开
展开全部
这是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或者是相关文档了解,在此不做赘述。
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或者是相关文档了解,在此不做赘述。
展开全部
哪个equals没执行啊?
我试了,都可以啊,包括注释掉的。
运行结果:
false
true
false
true
我试了,都可以啊,包括注释掉的。
运行结果:
false
true
false
true
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你所说的下面用的equals是指哪一句啊?
==用于比较两个对象的内存地址是否相等,相等返回true,否则返回false
equals用于比较两个对象的内容是否相等,相等返回true,否则返回false
==用于比较两个对象的内存地址是否相等,相等返回true,否则返回false
equals用于比较两个对象的内容是否相等,相等返回true,否则返回false
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写的代码应该没什么问题吧。
还有以后如果有多个判断语句你可以用
if(){
......
}else if(){
.......
}
这种方法,更为直观
还有以后如果有多个判断语句你可以用
if(){
......
}else if(){
.......
}
这种方法,更为直观
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
检验了 你重写的equals有执行。
结果为
false
true
结果为
false
true
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询