public Student(long id, String name){ this.id = id; this.name = name; }
时间: 2024-04-28 19:19:31 浏览: 12
这是Java代码中的另一个构造函数,也属于上文提到的"Student"类。这个构造函数有两个参数,分别为long类型的"id"和String类型的"name",用于在创建"Student"对象时,传入初始值来初始化成员变量。在函数体中,使用"this"关键字来引用当前对象,将传入的"id"和"name"值分别赋值给成员变量"id"和"name"。
相关问题
使用数据输入流ObjectOutputStream 和数据输出流ObjectInputStream 可以读取或写入任何Java 对象的数据,不用关心它们的实际长度是多少字节。一般与文件输入流FileInputStream 和输出流类FileOutputStream 一起使用。在程序创建两个学生对象,然后编写将该两个对象保存到student.in文件中代码,再编写从文件student.in中读出对象,并将对象的成员值显示到屏幕上,不要修改Student.java代码,观察数据是否有变量。 Student定义如下: public class Student implements Serializable { private int id; private String name; private int age; private char sex; private long serialVersionUID=1L; public Student(int id,String name,char sex,int age){ this.id = id; this.name = name; this.sex = sex; this.age = age; } public String toString(){ return id+":"+name+":"+sex+":"+age; } }
以下是保存到文件以及读取对象的代码:
```java
import java.io.*;
public class ObjectStreamExample {
public static void main(String[] args) {
// 创建两个学生对象
Student student1 = new Student(123, "Alice", 'F', 20);
Student student2 = new Student(456, "Bob", 'M', 22);
try {
// 创建文件输出流和对象输出流
FileOutputStream fileOutput = new FileOutputStream("student.in");
ObjectOutputStream objectOutput = new ObjectOutputStream(fileOutput);
// 将学生对象写入文件
objectOutput.writeObject(student1);
objectOutput.writeObject(student2);
// 关闭输出流
objectOutput.close();
fileOutput.close();
// 创建文件输入流和对象输入流
FileInputStream fileInput = new FileInputStream("student.in");
ObjectInputStream objectInput = new ObjectInputStream(fileInput);
// 从文件中读取学生对象并显示
Student readStudent1 = (Student) objectInput.readObject();
Student readStudent2 = (Student) objectInput.readObject();
System.out.println("读取到的学生对象1:" + readStudent1);
System.out.println("读取到的学生对象2:" + readStudent2);
// 关闭输入流
objectInput.close();
fileInput.close();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
```
程序输出:
```
读取到的学生对象1:123:Alice:F:20
读取到的学生对象2:456:Bob:M:22
```
已定义Student类,如下所示: public class Student implements Serializable{ private static final long serialVersionUID = 1L; //序列化串行标识 private String name; private int age; private String address; public Student(String name, int age, String address) { super(); this.name = name; this.age = age; this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", address=" + address + "]"; } } 要求定义5个学生对象,数据如下:学生1:("李四", 25, "河南省郑州市"),学生2:("韩梅梅", 19, "焦作市武陟县"),学生3:("李磊", 20, "郑州市中原区"),学生4:("张明", 21, "修武县方庄"),学生5:("吴林", 18, "开封市祥符区")。 请将这5个学生对象数据写入到“d:\\学生信息.txt”文件中,并在程序中反序列化输出5条学生信息。
代码如下:
```java
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
// 创建5个学生对象
Student s1 = new Student("李四", 25, "河南省郑州市");
Student s2 = new Student("韩梅梅", 19, "焦作市武陟县");
Student s3 = new Student("李磊", 20, "郑州市中原区");
Student s4 = new Student("张明", 21, "修武县方庄");
Student s5 = new Student("吴林", 18, "开封市祥符区");
// 将学生对象添加到列表中
students.add(s1);
students.add(s2);
students.add(s3);
students.add(s4);
students.add(s5);
try {
// 将学生对象列表写入文件
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d:\\学生信息.txt"));
oos.writeObject(students);
oos.close();
// 读取文件中的学生对象列表并输出信息
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:\\学生信息.txt"));
List<Student> studentsRead = (List<Student>) ois.readObject();
for (Student student : studentsRead) {
System.out.println(student);
}
ois.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
```
输出结果如下:
```
Student [name=李四, age=25, address=河南省郑州市]
Student [name=韩梅梅, age=19, address=焦作市武陟县]
Student [name=李磊, age=20, address=郑州市中原区]
Student [name=张明, age=21, address=修武县方庄]
Student [name=吴林, age=18, address=开封市祥符区]
```