Java的序列化是指将一个对象转换为一系列字节以便于存储和传输,而反序列化则是将这些字节再转换为对象。序列化的作用可以简单地理解为将内存中的对象序列化为一个可传输的数据流,而反序列化则将数据流转换为一个对象。因此,序列化功能可以方便地将对象保存到文件、数据库或网络中。
public class Student implements Serializable{ private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } public class Test { public static void main(String[] args) { Student student = new Student("Tom", 18); try { //序列化到文件中 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.txt")); oos.writeObject(student); //从文件中反序列化 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("student.txt")); Student s = (Student) ois.readObject(); System.out.println(s.getName() + " " + s.getAge()); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
在上述代码中,我们定义了一个Student类,实现Serializable接口。这个接口是序列化的标志,没有实现该接口的类将不能进行序列化。我们在main函数中创建了一个Student对象,并将其序列化到文件中。然后,我们在反序列化时读取这个文件并将序列化的对象转换为一个Student对象。
Java中,序列化和反序列化是通过ObjectOutputStream和ObjectInputStream实现的。如果我们要将一个对象保存到数据库中,可以使用JDBC将对象转换为BLOB(二进制大对象)类型的数据并存储到数据库中;如果要将对象传输到网络上,我们可以使用Socket将其序列化后发送到网络中。总之,序列化功能为Java中对象的存储和传输提供了一种简单的方法。