gpt4 book ai didi

java - 如何确定 Student 类的两个实例是否代表同一学生?

转载 作者:行者123 更新时间:2023-12-02 02:13:21 24 4
gpt4 key购买 nike

我有一个 Java 类

class Student
{
String name;
int age;
}

此外,我还有 Student 类 student1student2 的两个实例。

确定两个实例是否代表“同一学生”的一种方法是手动比较数据,即姓名和年龄。如果它们相同,那么它们代表“同一个学生”。

是否有其他方法可以查明这两个实例是否代表“同一学生”?

附注我在一次采访中被问到这个问题。我还是不太明白“同一个学生”这句话。我猜这意味着现实世界中的同一个学生。如果不是,面试官还有什么意思?

最佳答案

什么可以识别学生?

除了名字和年龄,我们什么都没有。现在,你可以有两个同名的人,但可能不会。无论如何,我不认为年龄可以识别某人 - 不像名字那样。

所以我会这样做

public boolean equals(Object o) {
if(!o instanceof Student) return false;
Student s = (Student)o;
return o.name.equals(this.name);
}

如果您是 Java 新手,Object 类有一个方法 public boolean equals(Object o)。因为 Java 中的每个对象都继承自 Object,所以它们都具有该方法,无论它们是否想要。默认实现只是比较内存中的地址。所以如果你要做

Student s = new Student();
Student t = new Student();
boolean e = (s == t); // always false
boolean q = s.equals(t); // always false if not overridden

现在,我编写的这个特定方法不执行 null 检查,而如果它在生产代码中,您可能会希望执行此操作。

关于java - 如何确定 Student 类的两个实例是否代表同一学生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5055559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com