ArrayList数组为什么要用transient修饰?

序列化

1、java使用 ObjectOutputStream() 和 ObjectInputStream() 对对象进行手动序列化和反序列化。
  序列化的时候会调用 writeObject() 方法,把对象转换为字节流。
  反序列化的时候会调用 readObject() 方法,把字节流转换为对象。


2、transient 关键字修饰的变量 不会 被序列化为字节流

ArrayList中writeObject

在 writeObject() 方法中,for循环按需序列化,用了几个下标序列化几个对象。读取的时候也是一样的,有几个读几个,优化到极致!

 

posted @ 2021-08-12 09:56  mzjnumber1  阅读(505)  评论(0编辑  收藏  举报