关于java中选择equals()而不是==的判断
需求:
1,main方法中定义一个集合,存入三个用户对象。
用户属性为:id,username,password
2,要求:定义一个方法,根据id查找对应的学生信息。
如果存在,返回索引
如果不存在,返回-1
import java.util.ArrayList;
public class ArrayListDemo6 {
public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
User u1 = new User("1", "zhangsan", "12345");
User u2 = new User("2", "lisi", "12345");
User u3 = new User("3", "wangwu", "12345");
list.add(u1);
list.add(u2);
list.add(u3);
}
int index = getIndex(list, "heima001");
System.out.println(index);
//根据id获取索引
//需要 集合、id
//返回:索引
public static int getIndex(ArrayList<User> list, String id) {
for (int i = 0; i < list.size(); i++) {
//equals()用于比较对象的内容(属性值),而==用于比较对象的引用(内存地址)
if (list.get(i).getId().equals(id)) {
return i;
}
}
return -1;
}
public class User {
private String id;
private String username;
private String password;
/**
* 省略JavaBean
*/
}
在这段代码中,比较使用的是equals()而不是==,是因为equals()用于比较对象的内容(属性值),而==用于比较对象的引用(内存地址)。
在Java中,==用于比较基本类型的值或引用类型的内存地址。对于基本类型,比较的是它们的值是否相等。而对于引用类型(如User对象),==比较的是它们的引用是否指向同一个内存地址,即判断两个引用是否指向同一个对象。
然而,在这段代码中,我们想要比较的是User对象的属性值(id),而不是比较对象的引用。因此,我们使用equals()方法来比较User对象的id属性是否相等。equals()方法是在Object类中定义的,可以被子类重写以实现自定义的相等性比较逻辑。在User类中,可能已经重写了equals()方法,使其比较id属性的值。
总而言之,如果我们希望比较对象的内容(属性值),应该使用equals()方法,而不是==运算符来进行比较。