42对象的序列化流

java.io.ObjectInputStream extends OutputStream
ObjectOutputStream:对象的序列化流  作用把对象以流的方式写入到文件中
构造方法:
ObjectOutStream(OutputStream out):创建指定的OutputStream的ObjectOutputStream
参数:
OutputStream out:字节输出流
特有的成员方法:
void writeObject(Object obj):将指定的对象写入 ObjectOutputStream
使用步骤:
1.创建ObjectOutputStream对象,构造方法中传递字节输出流
2.使用ObjectOutputStream对象中的方法writeObject,把对象写入到文件中
3.释放资源


static关键字:静态关键字
静态优先于非静态加载到内存中(静态优先于对象进入到内存中)
被static修饰的成员变量不能被序列化的,序列化的都是对象
用static修饰变量后 private static int age;
 再读对象结果           小美女0

transient关键字:瞬态关键字
被transient修饰的成员变量,不能被序列化
用transient修饰变量后 private transient int age;
 再读对象结果           小美女0

如果以后不想成员变量被序列化就用transient

序列化和反序列化的时候,会抛出NotSerializableException没有序列化异常
类通过实现java.io.Seriolizable接口来启用序列化功能,未实现此接口的类无法使其任何状态序列化和反序列化
Serializable接口也叫标记型接口
  要进行序列化和反序列化的类必须实现Serializable接口,就会给类添加一个标记
  当我们进行序列化和反序列化的时候,就会检测类上是否有这个标记
    有,则可以序列化,没有,则不能

Person类:

package demo45对象的序列化流;

import java.io.Serializable;

/*
序列化和反序列化的时候,会抛出NotSerializableException没有序列化异常
类通过实现java.io.Seriolizable接口来启用序列化功能,未实现此接口的类无法使其任何状态序列化和反序列化
Serializable接口也叫标记型接口
  要进行序列化和反序列化的类必须实现Serializable接口,就会给类添加一个标记
  当我们进行序列化和反序列化的时候,就会检测类上是否有这个标记
    有,则可以序列化,没有,则不能
 */
public class Person implements Serializable {
    //当clsss文件在序列化之后发生了修改,它的序列号发生改变,可以自己定义一个序号用final修饰了他就是常量
    private static final long serialVersionUID=1L;
    private String name;
    public int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Person() {
    }

    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;
    }
}
DemoObjectOutputStream类:
package demo45对象的序列化流;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/*
java.io.ObjectInputStream extends OutputStream
ObjectOutputStream:对象的序列化流  作用把对象以流的方式写入到文件中
构造方法:
ObjectOutStream(OutputStream out):创建指定的OutputStream的ObjectOutputStream
参数:
OutputStream out:字节输出流
特有的成员方法:
void writeObject(Object obj):将指定的对象写入 ObjectOutputStream
使用步骤:
1.创建ObjectOutputStream对象,构造方法中传递字节输出流
2.使用ObjectOutputStream对象中的方法writeObject,把对象写入到文件中
3.释放资源


static关键字:静态关键字
静态优先于非静态加载到内存中(静态优先于对象进入到内存中)
被static修饰的成员变量不能被序列化的,序列化的都是对象
用static修饰变量后 private static int age;
 再读对象结果           小美女0

transient关键字:瞬态关键字
被transient修饰的成员变量,不能被序列化
用transient修饰变量后 private transient int age;
 再读对象结果           小美女0

如果以后不想成员变量被序列化就用transient
 */
public class DemoObjectOutputStream {
    public static void main(String[] args) throws IOException {
        //创建ObjectOutputStream对象,构造方法中传递字节输出流
        ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("E:\\多线程\\person.txt"));
        //2.使用ObjectOutputStream对象中的方法writeObject,把对象写入到文件中
        oos.writeObject(new Person("小美女",18));
        //3.释放资源
        oos.close();
    }
}

 

 

猜你喜欢

转载自blog.csdn.net/dengfengling999/article/details/124436596