1.为什么要序列化
要想知道这个问题,首先要知道序列化的定义:
百度百科:序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
意思就是说当你想要存储或者传输对象的状态信息时,可以用到序列化
2.如何将对象序列化
序列化对象状态信息
// 将用户对象序列化
static User writeUser() {
User user = null;
try {
// 将对象状态信息写入文件
FileOutputStream fileOutputStream = new FileOutputStream("E:\\test\\user.txt");
// 输出对象状态信息转换为字节码
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
user = new User();
user.setName("Mari");
user.setPhone("13800138000");
user.setSex(false);
user.setAge(18);
objectOutputStream.writeObject(user);
objectOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("hello world");
}
return user;
}
读取序列化对象
// 读取用户对象
static User readUser() {
User user = null;
try {
FileInputStream fileInputStream = new FileInputStream("E:\\test\\user.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
user = (User) objectInputStream.readObject();
System.out.println(user);
} catch (Exception e) {
e.printStackTrace();
}
return user;
}
测试
public static void main(String[] args) {
User user = writeUser();
User user1 = readUser();
System.out.println(user.hashCode());
System.out.println(user1.hashCode());
System.out.println(user==user1);
System.out.println(user.getSex().equals(user1.getSex()));
System.out.println(user.getName().equals(user1.getName()));
System.out.println(user.getAge().equals(user1.getAge()));
System.out.println(user.getPhone().equals(user1.getPhone()));
}
运行结果
hello world
User{name='Mari', phone='13800138000', sex=false, age=18}
746292446
1342443276
false
true
true
true
true