this.stuage=s.readInt(); 可以使用this.stuage=s.readInt();代替吗? 怎么知道反序列化的元素是stuaged的?
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位四次读取,再具体我也忘了