1、什么是对象序列化
转化成字节序列,目的是为了存盘或者是进行网络传输。
import java.io.*;
public class TestObjectStream
{
public static void writeStudent(Student student)
{
ObjectOutputStream out=null;
try
{
out=new ObjectOutputStream(new FileOutputStream("data.txt"));
out.writeObject(student);
}
catch(IOException e)
{
e.printStackTrace();
}
finally
{
try
{
out.close();
}
catch(IOException e)
{
System.out.println("文件关闭异常");
}
}
}
public static void readStudent()
{
ObjectInputStream ois=null;
try
{
ois=new ObjectInputStream(new FileInputStream("data.txt"));
Student stu=(Student)ois.readObject();
System.out.println(stu);
}
catch(IOException e)
{
e.printStackTrace();
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
finally
{
try
{
ois.close();
}
catch(IOException e)
{
System.out.println("文件关闭异常");
}
}
}
public static void main(String[] args)
{
Student s=new Student("Tom",18,100);
writeStudent(s);
readStudent();
}
}
class Student implements Serializable
{
private String name;
private int age;
private double score;
public Student()
{
System.out.println("Student的构造方法");
}
public Student(String n,int age,double score)
{
name=n;
this.age=age;
this.score=score;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public double getScore() {
return score;
}
public String toString()
{
return "姓名是"+this.name+"年龄是"+this.age+"成绩是"+this.score;
}
}
某一个类中的引用类也要实现对象序列化
(1)transient不能修饰静态或者其余类型的变量
(2)name和age是要序列化的,但是score无法序列化