equals方法
java对象中的equals方法的设计目的:判断两个对象是否一样。
Java源码里面Object中的equals方法:
publicbooleanequals(Object obj){
return (this == obj);
}
== 两边如果是引用类型,则比较内存地址,地址相同则是true,反之则false.
Object中的equals方法比较的是两个引用的内存地址。但是在现实的业务逻辑当中,不应该比较内存地址,应该比较地址里面的内容,所以需要对equals方法进行重写。
注意:在使用自己创建的类进行equals比较时,一定要先重写equals方法
创建一个Star类
classStar{
//身份证号 int id;
//姓名 String name;
publicStar(intid,String name){
this.id = id;
this.name = name;
}
//根据需求规定重写equals方法 //s1.equals(s2); publicbooleanequals(Object obj){
if(this==obj){
return true;
}
if(obj instanceof Star){
Star s = (Star)obj;
if(s.id == id && s.name.equals(name)){
return true;
}
}
return false;
}
}
创建一个测试类:
public class Test01{
publicstaticvoidmain(String[] args){
Object o1 = new Object();
Object o2 = new Object();
boolean b1 = o1.equals(o2);
System.out.println(b1); //false Star s1 = new Star(100,"成龙");
Star s2 = new Star(100,"成龙");
Star s3 = new Star(110,"李连杰");
System.out.println(s1.equals(s2)); //true System.out.println(s2.equals(s3)); //false }
}
比较两个String类型时,不能使用==,要使用equals方法,String已经重写了Object中的equals方法,比较的是内容。
public class Test02{
publicstaticvoidmain(String[] args){
String s1 = new String("ABC");
String s2 = new String("ABC");
System.out.println(s1==s2); //false //String已经重写了Object中的equals方法,比较的是内容。 System.out.println(s1.equals(s2)); //true }
}