首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

操作符“==”与对象的equals()步骤

2012-10-29 
操作符“”与对象的equals()方法??? 很多时候都会用到类型或者是对象是否相等的比较应用,需要总结一下。???

操作符“==”与对象的equals()方法

??? 很多时候都会用到类型或者是对象是否相等的比较应用,需要总结一下。

??? 操作符“==”是用来比较两个操作元是否相等,两个操作元可以是基本类型,也可以是引用类型,如果是引用类型变量,两个变量必须是同一个对象,结果才是true。

举例如下:

?int i1= 1,i2=2,i3=1;
?boolean b1=false,b2=true,b3= false;
?String s1="test",s2 ="test_2",s3="test",s4;
?s4 = new String("test");
?System.out.println("i1==i2:"+(i1==i2)+" i1==i3:"+(i1==i3));
?System.out.println("b1==b2:"+(b1==b2)+" b1==b3:"+(b1==b3));
?System.out.println("s1==s2:"+(s1==s2)+" s1==s3:"+(s1==s3)+" s1==s4:"+(s1==s4));

?

输出:

i1==i2:false i1==i3:true
b1==b2:false b1==b3:true
s1==s2:false s1==s3:true s1==s4:false
?? 对于equals()方法,java.io.Object类中定义了equals方法,用来比较两个对象是否相等。其实在对象是否相等的问题上,==和equqls()是效果一样的,但是由于JDK类中有一些类覆盖了oject类的equals()方法,比较规则为:如果两个对象的类型一致,并且内容一致,则返回true,这些类有:java.io.file,java.util.Date,java.lang.string,包装类(Integer,Double等)。 举例如下:

?? ?Integer int1 = new Integer(1);
?Integer int2 = new Integer(1);
?
?String str1 = new String("test");
?String str2 = new String("test");
?System.out.println("int1==int2:"+(int1==int2)+" int1.equals(int2):"+int1.equals(int2));
?System.out.println("str1==str2:"+(str1==str2)+" str1.equals(str2):"+str1.equals(str2));?

输出:

int1==int2:false int1.equals(int2):true
str1==str2:false str1.equals(str2):true

?

??? 注意:对于那些没有覆盖equals()的类,功能应用还是一样的



不是说写一个类就要覆盖equals()方法,如果你这个类的对象永远不用于集合类(java.util包下面),那么完全不用覆盖

关于这点推荐你阅读下<<Effective Java>>,里面有一章专门讲解equals、hashCode方法如何使用~~


不是说写一个类就要覆盖equals()方法,如果你这个类的对象永远不用于集合类(java.util包下面),那么完全不用覆盖

关于这点推荐你阅读下<<Effective Java>>,里面有一章专门讲解equals、hashCode方法如何使用~~

呵呵~很有道理,讨论层次比较深啦~我知道覆盖equals是部分类进行了这样的操作,如果要想覆盖equals,那么hashCode()也是需要覆盖~至于更深层次的含义,有待深入了解......

热点排行