三个变量a,b,c。如果a.equals(b) 同时 b.equals(c)返回都是True,那么是否总是c.equals(a)? 三个变量a,b,c。如果a.equals(b) 同时 b.equals(c)返回都是True,那么是否总是c.equals(a)?另外,这在java中有什么作用或者用途?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是的,java的equal方法的设计是要遵循这个原则的 不一定哦,即使不同类型也可以equals equals 只是一个普通的方法。从原则上讲,如果 a.eq.b, b.eq.c 那么,应该让 a.eq.c但你自己写的类也可以不这样,只是不符合原则,但可以这么实现。 equals不被override的情况下a.eql(c) 应该是的这是equals()方法实现的原则1、自反性:对于非null的引用,x.equals(x)==true2、对称性:x.equals(y)==true当且仅当y.equals(x)==true3、传递性:x.equals(y)==true and y.equals(z)==true then x.equals(z)==true4、一致性:如果x、y指向的引用没变,重复x.equals(y)应始终 为true5、对于任何非null的引用x,x.equals(null)==false public class A { public String a1="A1"; public String a2="A2"; public void p1(){ System.out.println(a2); }; public boolean equals(Object a){ if(((A)a).a1.equals(this.a1) ||((A)a).a2.equals(this.a2) ) return true; return false; }; public static void main(String[] args) { A a=new A(); A b=new A(); A c=new A(); b.a2="A3"; c.a2="A3"; c.a1="A4"; System.out.println(a.equals(b)); System.out.println(b.equals(c)); System.out.println(a.equals(c)); } }运行结果: true; true; false a =(A1,A2)b =(A1,A3)c =(A4,A3) 不一定,看你equals怎么重载了equals只是一个方法,你可以任意改变判断条件的 同意楼上的, 答案是不一定,equals方法实现不一样另外不知道楼主所说的abc是否是同一类型? 如果是的话, 答案应该是一定的. 大多的java类里面都override equals方法了 建议LZ看看effective java里面有很详细的说明,以及如果不满足传递性的后果 这是equals()方法实现的一个原则你要重写equals()最好遵循 做个小程序测试一下不就行了啊!是相同类型的对象之间的比较,结果是相同的!不同类型的对象之间比较的话,就要看你怎样重写hashCode()和equals();是自己定义的类型还要实现Comparable 接口! to:ttaallkk1(j2ee_lover) equals不被override的情况下a.eql(c)请问你override在在大陆的常用翻译是什么?它具体是什么意思?我有点不太清楚了。C++中是覆盖(实现)基类的虚函数的意思。翻译也是覆盖吗?但在JAVA中是什么意思呢?谢谢 。 我们用java解决实际问题。欢迎有经验的java程序员加入我们的讨论,因人数接近上限,初级人员暂时不能加入,请谅解。QQ 群:3001581 有没有好的文本编辑器,可以插如代码格式的那种。 编译错误:为什么还会提示方法必须返回int值 大神门,帮帮我把!!! 怎么csdn上电子图书里的doc版<精通Struts技术>只有两章啊 使用java中的什么控件可以完成这个功能——java构件高手请进 50分 散分 函数问题 新手求聊天工具源码(我就这么点分了...-_-|||) 帮我看一下环境变量问题,help 请问PB,JB在哪有下载 引入别一个包中的类出错,谢谢大家 请问一个关于流式套接字的问题?
a.eql(c)
这是equals()方法实现的原则
1、自反性:对于非null的引用,x.equals(x)==true
2、对称性:x.equals(y)==true当且仅当y.equals(x)==true
3、传递性:x.equals(y)==true and y.equals(z)==true then x.equals(z)==true
4、一致性:如果x、y指向的引用没变,重复x.equals(y)应始终 为true
5、对于任何非null的引用x,x.equals(null)==false
{ public String a1="A1";
public String a2="A2";
public void p1(){
System.out.println(a2);
}; public boolean equals(Object a){
if(((A)a).a1.equals(this.a1) ||((A)a).a2.equals(this.a2) ) return true;
return false;
};
public static void main(String[] args)
{ A a=new A();
A b=new A();
A c=new A();
b.a2="A3";
c.a2="A3";
c.a1="A4";
System.out.println(a.equals(b));
System.out.println(b.equals(c));
System.out.println(a.equals(c));
}
}运行结果: true; true; false
b =(A1,A3)
c =(A4,A3)
是相同类型的对象之间的比较,结果是相同的!
不同类型的对象之间比较的话,就要看你怎样重写hashCode()和equals();
是自己定义的类型还要实现Comparable 接口!
equals不被override的情况下
a.eql(c)请问你override在在大陆的常用翻译是什么?它具体是什么意思?我有点不太清楚了。C++中是覆盖(实现)基类的虚函数的意思。翻译也是覆盖吗?但在JAVA中是什么意思呢?谢谢 。