尝试打印ArrayList<Student>
对象时,它不会按照您可能期望的方式显示每个学生的详细信息。默认情况下,ArrayList
的toString()
方法只会返回列表的内存地址和一个简短的表示,而不会显示列表中每个对象的详细信息。
要解决这个问题,您需要在Student
类中重写toString()
方法,以便在打印列表时能够显示每个学生的详细信息。
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
注意:
toString()
方法在 Java 中是一个非常重要的方法,它属于 Object
类,因此所有的 Java 类都继承了这个方法(除非显式地覆盖了它)。toString()
方法的主要作用是将对象转换为字符串表示形式,这对于调试、日志记录、以及将对象的信息输出到控制台或文件中非常有用。
当你试图打印一个对象时(比如使用 System.out.println()
),Java 会默认调用该对象的 toString()
方法。如果类没有重写 toString()
方法,那么就会调用 Object
类中的默认实现,这通常会返回一个包含类名和哈希码的字符串,如 ClassName@hashcode
,这对于识别对象实例来说可能不是很有用。
通过在自定义类中重写 toString()
方法,你可以控制对象被转换为字符串时的表示形式。这通常包括对象的各个字段的值,以提供有关对象状态的详细信息。
例如,在你提供的 Student
类中,重写 toString()
方法后,当你尝试打印包含 Student
对象的 ArrayList
时,你会得到一个包含学生详细信息的字符串列表,而不是默认的哈希码表示。
因此,在编写自定义类时,通常建议重写 toString()
方法,以提供有关对象状态的清晰、有意义的表示。
@Override
注解只能用于方法,不能用于类、字段或构造函数。同时,它只能用于重写父类或接口中的方法,不能用于实现新的方法。
Student s = new student();
s.setName(name);//把name赋值给对象
list.add(s);//把对象添加到集合中
ArrayList<password> list = new ArrayList<>();
//当要添加对象时,<>里是一个对象名
如果我们要返回多个数据,可以把这些数据先放在一个容器中,把容器返回,返回值类型可以为一个集合(ArrayList<>),调用方法时 ArrayList<> 名称 = 方法名称(传递的参数)