java实现:创建一学生类(包括姓名、年龄、班级、密码),创建若干该类的对象并保存在文件中(密码不保存),从文件读取对象后输出在屏幕上
时间: 2024-02-13 14:07:53 浏览: 88
好的,以下是Java代码实现:
```java
import java.io.*;
public class Student implements Serializable {
private String name;
private int age;
private String className;
private transient String password;
public Student(String name, int age, String className, String password) {
this.name = name;
this.age = age;
this.className = className;
this.password = password;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getClassName() {
return className;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", className='" + className + '\'' +
'}';
}
public static void main(String[] args) {
Student s1 = new Student("Tom", 18, "Class 1", "123456");
Student s2 = new Student("Jack", 19, "Class 2", "abcdef");
Student[] students = {s1, s2};
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("students.dat"))) {
oos.writeObject(students);
} catch (IOException e) {
e.printStackTrace();
}
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("students.dat"))) {
Student[] studentsFromFile = (Student[]) ois.readObject();
for (Student s : studentsFromFile) {
System.out.println(s);
}
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
```
上述代码定义了一个`Student`类,其中包含姓名、年龄、班级、密码等属性。其中,为了保护密码信息,我们使用了`transient`关键字,表示该属性不会被序列化。在`main`方法中,我们创建了两个`Student`对象,并将它们保存在一个数组中。接着,我们使用`ObjectOutputStream`将数组写入到文件`students.dat`中。然后,我们使用`ObjectInputStream`从文件中读取数组,并输出到屏幕上。
注意:为了使`Student`类支持序列化,我们需要实现`Serializable`接口,并重写`toString()`方法。同时,在读取对象时,我们需要将返回值强制转换为`Student[]`类型。
阅读全文