判断两个对象内容相等 不能直接调用Object类里的equals方法,将equals方法写到Object类当中是让所有对象都拥有equals方法,,它的目的是给开发者重写的,不然其方法实现的功能与’==’一模一样 而用==号是不能判断两个对象内容相等的 eg. User a = new User(); User b = new User(); System.out.println(a == b); System.out.println(a.equals(b)); //还未重写equals方法 上面两行代码打印出来的都是false,因为两个引用对象a和b指向的是不同对象,只有指向相同的对象才会返回true 另外,在Object类的equals方法如下:
class User {
private String name;
privateint age;
publicbooleanequals(Object obj){
if(this == obj) returntrue; //若指向同一个对象,直接返回trueboolean flag = obj instanceof User; //判断obj是否属于User这个类if(flag){
User one = (User) obj;
if(this.age == one.age && this.name.equals(one.name)) { //基本数据类型直接用==,string为引用数据类型,调用String类本身重写的equals方法returntrue;
}
elsereturnfalse;
}
elsereturnfalse;
}
publicUser(String name, int age) {
this.name = name;
this.age = age;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
publicclass TestEquals {
publicstaticvoidmain(String[] args) {
User personOne = new User("zhangsan",18); //new出三个User对象
User personTwo = new User("lisi",18);
User personThree = new User("zhangsan",18);
System.out.println(personOne.equals(personTwo));
System.out.println(personOne.equals(personThree));
}
}
判断两个对象内容相等 不能直接调用Object类里的equals方法,将equals方法写到Object类当中是让所有对象都拥有equals方法,,它的目的是给开发者重写的,不然其方法实现的功能与’==’一模一样 而用==号是不能判断两个对象内容相等的 eg. User a = new User(); User b = new User(); System.out.prin