Java Lecture 17 对象流、字节流、字符流、转换字符流和缓冲字符流

一、对象流(也是一种高级流)

对象流作用:进行对象的序列化和反序列化的操作

对象的序列化:将一个对象按照其结构转换成为一组字节的过程。

对象的反序列化:将一组字节(必须是序列化的一组字节)还原为一个对象的过程。

好处:有了对象流,我们可以很方便区读写任何Java对象

对象输入流:java.io.ObjectInputStream

对象输出流:java.io.ObjectOutputStream

对象如果需要序列化是需要为当前对象的模板类添加实现Serializable接口。

用一个例子来说明(待续):

人的模板类:

package io;
import java.io.Serializable;
import java.util.Arrays;
/**
* 人类模板
* 当一个类实现了可序列化接口时,最好显示的定义serialVersionUID序列化版本号
* 当对象输出流在进行对象的序列化时,会查看是否有显示的定义版本号,如果没有则会根据当前类结构自动
计算版本号,
* 只要当前类的结构发生变化,这个类的版本号就会发生改变,而版本号不一致,就会导致反序列化失效,所以
我们要固定版本号. */
public class Person implements Serializable { //固定当前类的版本号为1,创建的对象都是这个版本号 static final long serialVersionUID = 1L; private String name;
    private int age;
    private String gender;
    /*
* 当一个属性被transient修饰后,那么当进行对象序列化时,该属性的值会被忽略
* 当然,反序列化时,该属性只会采用默认值
* transient: 短暂的,转瞬即逝的 */
private transient String[] otherInfo;//其它信息
private int salary;//薪资
//1.在当前空白区域 alt + insert 或 右键 找到 Generate 选中 //选择 get and set 方法 全选生成
//重复操作1. 选择 toString
//重复操作1. 选择 第一个选择 生成构造方法 全选 生成。
public Person(String name, int age, String gender, String[] otherInfo, int
salary) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.otherInfo = otherInfo;
        this.salary = salary;
    }
@Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                ", otherInfo=" + Arrays.toString(otherInfo) +
                ", salary=" + salary +
                '}';
}
    public String getName() {
        return name;
}
    public void setName(String name) {
        this.name = name;
}
    public int ge
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq030928

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值