1洛退、概念
- 對象的序列化:把Java對象轉換為字節(jié)序列并存儲至一個儲存媒介的過程;
- 對象的反序列化:把字節(jié)序列恢復為Java對象的過程;
2、序列化的詳細解釋
對象的序列化涉及三個點關鍵點:Java對象条霜、字節(jié)序列、存儲涵亏。
- Java對象的組成
Java對象包含變量與方法宰睡。但是序列與反序列化僅處理Java變量而不處理方法蒲凶,序列與反序列化僅對數據進行處理。 - 字符序列
字符序列是兩個詞拆内,字符是在計算機和電信領域中旋圆,字符(Character)是一個信息單位。數學上麸恍,序列是被排成一列的對象(或事件)灵巧。通俗一點說就是連續(xù)排列的多個字符的集合。類似于"1A165613246546" 抹沪。 - 存儲
字符序列需要保存到一個地方刻肄,可以是硬盤也可以是內存。簡單說法是:序列化把當前對象信息保存下來融欧。反序列化剛好相反的操作敏弃。
3、Java對象與Java對象序列化的區(qū)別
Java對象存在的前提必須在JVM運行期間存在噪馏,如果想在JVM非運行的情況下或者在其他機器JVM上獲取指定Java對象麦到,在現有Java對象的機制下都不可能完成。 與Java對象不同的是欠肾,如果對Java對象執(zhí)行序列化操作瓶颠,因為原理是把Java對象信息保存到存儲媒介,所以可以在以上Java對象不可能存在的兩種情況下依然可以使用Java對象刺桃。那為什么需要把對象信息保存到存儲媒介中并之后讀取出來粹淋? 因為開發(fā)中有在JVM非運行的情況下或者在其他機器JVM上獲取指定Java對象的需求。
4虏肾、Android中Serializable與Parcelable區(qū)別
兩種都是用于支持序列化廓啊、反序列化話操作,兩者最大的區(qū)別在于存儲媒介的不同封豪,Serializable使用IO讀寫存儲在硬盤上谴轮,而Parcelable是直接在內存中讀寫,很明顯內存的讀寫速度通常大于IO讀寫吹埠,所以在Android中通常優(yōu)先選擇Parcelable第步。
5、深入Parcelable
Parcel是一種輕量級的高效的對象序列化和反序列化機制缘琅。整個讀寫全是在內存中進行粘都,主要是通過malloc()、realloc()刷袍、memcpy()等內存操作進行翩隧,所以效率比JAVA序列化中使用外部存儲器會高很多;