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中對象的存儲和傳輸提供了一種簡單的方法。