判断基本数据类型,判断的是值是否相等
判断引用数据类型,判断的是地址是否相等
1:A a =newA();A b = a;A c = a;
a == b == c ;//true
equals()
是Object的方法,只能判断引用类型是否相等,默认判断的是地址是否相等
子类往往重写该方法,判断内容是否相等,比如Integer、StringObject的equals()publicbooleanequals(Object obj){return(this== obj);}Integer的equals()publicbooleanequals(Object obj){if(obj instanceofInteger){return value ==((Integer)obj).intValue();}returnfalse;}String的equals()publicbooleanequals(Object anObject){if(this== anObject){returntrue;}if(anObject instanceofString){String aString =(String)anObject;if(coder()== aString.coder()){returnisLatin1()?StringLatin1.equals(value, aString.value):StringUTF16.equals(value, aString.value);}}returnfalse;}
# 普通类equals()比较
classF{privateString name;publicF(String name){this.name = name;}}F f =newF("zs");F f1 =newF("zs");System.out.println(f.equals(f1));//false,普通类equals没有重写,调用的是Object的equals(),比较的是地址是否相等
重写equals()
@Setter@GetterpublicclassPerson{privateint a;privateString name;@Overridepublicbooleanequals(Object obj){if(this== obj){returntrue;}if(obj instanceofPerson){Person p =(Person) obj;returnthis.getA()== p.getA()&&this.getName().equals(p.getName());}returnfalse;}publicstaticvoidmain(String[] args){Person p1 =newPerson();
p1.setA(1);
p1.setName("1");Person p2 =newPerson();
p2.setA(1);
p2.setName("1");System.out.println(p1.equals(p2));}}1:10==10.0f//true2:char a ='A';
cahr b =12;//a==b true3:String a =newString("1");String b =newString("1");
a == b //false
a.equals(b)//true4:"A"==newInteger(1);//编译错误,因为不是同一个对象