ArrayList数组为什么要用transient修饰?
序列化
1、java使用 ObjectOutputStream() 和 ObjectInputStream() 对对象进行手动序列化和反序列化。
序列化的时候会调用 writeObject() 方法,把对象转换为字节流。
反序列化的时候会调用 readObject() 方法,把字节流转换为对象。
2、transient 关键字修饰的变量 不会 被序列化为字节流
ArrayList中writeObject
在 writeObject() 方法中,for循环按需序列化,用了几个下标序列化几个对象。读取的时候也是一样的,有几个读几个,优化到极致!