课程
/后端开发
/Java
/文件传输基础——Java IO流
this.stuage=s.readInt(); 可以使用this.stuage=s.readInt();代替吗? 怎么知道反序列化的元素是stuaged的?
2016-07-07
源自:文件传输基础——Java IO流 6-2
正在回答
stuage是通过s.writeInt(stuage)写入的,这里只有一个transient int型,读的时候自然没问题,如果有两个transient int型是按照写入的顺序读取的。假设stusex=1,stuage=20,比如写入顺序是:
s.writeInt(stusex);
s.writeInt(stuage);
第一次执行s.readInt()会读取1,
再次执行s.readInt()会读取20,
如果还想再执行s.readInt()会报java.io.EOFException异常。
每天一学 提问者
反序列化就是把byte重新转为原本类型
序列化之后是byte格式的,readInt正好可以读取byte类型将其转为int型,底层机制是通过位运算实现的,你可以自己去看,int32位通过左移24位 左移16位 左移8位 左移0位四次读取,再具体我也忘了
举报
为您介绍IO流的使用,以及对象的序列化和反序列化的内容
2 回答什么是序列化和反序列化
5 回答在自行序列化的时,在自行序列化的类中重写的方法writeObject和readObject方法是怎么被调用的,程序中也没有用该类对象调用这两个方法啊?具体的逻辑是怎样的呢,是自行就被调用了吗?
2 回答关于调用自定义的序列化方法的问题
2 回答序列化和反序列化具体用在什么地方
1 回答序列化和反序列化问题