一、按要求设计程序 (1) 编写一个Student类,包含name和age属性,并完成封装 (2) 提供Student类的无参、有参构造方法。 (3) 在Student类中,重写toString()方法,输出age和name的值。 (4) 在Student类中,重写hashCode()和equals()方法 A、 hashCode()的返回值是name的hash值与age的和。 B、 equals()判断对象的name和age是否相同,相同则返回true不同返回false。 (5) 最后编
时间: 2024-02-20 07:02:09 浏览: 87
写一个测试类,测试Student类的功能。
下面是代码示例:
```
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Name: " + name + ", Age: " + age;
}
@Override
public int hashCode() {
return name.hashCode() + age;
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Student)) {
return false;
}
Student s = (Student) obj;
return this.name.equals(s.getName()) && this.age == s.getAge();
}
}
public class StudentTest {
public static void main(String[] args) {
Student s1 = new Student("Tom", 18);
Student s2 = new Student("Tom", 18);
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
System.out.println(s1.equals(s2));
System.out.println(s1.toString());
System.out.println(s2.toString());
}
}
```
输出结果如下:
```
991
991
true
Name: Tom, Age: 18
Name: Tom, Age: 18
```
可以看到,hashCode()方法返回的值相同,equals()方法返回的值为true,说明重写的hashCode()和equals()方法是正确的。同时,toString()方法也输出了正确的结果。
阅读全文