操作符“==”与对象的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()的类,功能应用还是一样的