詳情描述
千鋒教育的Java培訓(xùn)課程口碑一向很好,有很多朋友都慕千鋒之名而來,有的朋友說了,我現(xiàn)在暫時不方便前去試聽,有沒有文字教程呢?有的。下面就是千鋒Java培訓(xùn)的一片文字教程。
概述
Java平臺允許我們在內(nèi)存中創(chuàng)建可復(fù)用的Java對象,但一般情況下,只有當(dāng)JVM處于運(yùn)行時,這些對象才可能存在,即,這些對象的生命周期不會比JVM的生命周期更長。但在現(xiàn)實應(yīng)用中,就可能要求在JVM停止運(yùn)行之后能夠保存(持久化)指定的對象,并在將來重新讀取被保存的對象。Java對象序列化就能夠幫助我們實現(xiàn)該功能。
使用Java對象序列化,在保存對象時,會把其狀態(tài)保存為一組字節(jié),在未來,再將這些字節(jié)組裝成對象。必須注意地是,對象序列化保存的是對象的"狀態(tài)",即它的成員變量。由此可知,對象序列化不會關(guān)注類中的靜態(tài)變量。
如何序列化
只要一個類實現(xiàn)了java.io.接口,那么它就可以被序列化。
作用
適用于Java的序列化機(jī)制。簡單來說,Java的序列化機(jī)制是用判斷類的來驗證版本一致性的。在進(jìn)行反序列化時,JVM會把傳來的字節(jié)流中的與本地相應(yīng)實體類的進(jìn)行比較,如果相同就認(rèn)為是一致的,可以進(jìn)行反序列化,否則就會出現(xiàn)序列化版本不一致的異常,即是
如何產(chǎn)生
在eclipse或者idea中,當(dāng)實現(xiàn)了接口以后,在對應(yīng)行 左端會有一個黃色小嘆號,點(diǎn)擊,選擇generaterd serial version ID,就可以生產(chǎn)如圖所示的id。
代碼實例
序列化及反序列化相關(guān)知識
1、在Java中,只要一個類實現(xiàn)了java.io.Serializable接口,那么它就可以被序列化。
2、依靠和對對象進(jìn)行序列化及反序列化
3、虛擬機(jī)是否允許反序列化,不僅取決于類路徑和功能代碼是否一致,一個非常重要的一點(diǎn)是兩個類的序列化 ID 是否一致(就是 private static final long serialVersionUID)
4、序列化并不保存靜態(tài)變量。
5、要想將父類對象也序列化,就需要讓父類也實現(xiàn)Serializable 接口。
6、Transient 關(guān)鍵字的作用是控制變量的序列化,在變量聲明前加上該關(guān)鍵字,可以阻止該變量被序列化到文件中,在被反序列化后,transient 變量的值被設(shè)為初始值,如 int 型的是 0,對象型的是 null。
7、服務(wù)器端給客戶端發(fā)送序列化對象數(shù)據(jù),對象中有一些數(shù)據(jù)是敏感的,比如密碼字符串等,希望對該密碼字段在序列化時,進(jìn)行加密,而客戶端如果擁有解密的密鑰,只有在客戶端進(jìn)行反序列化時,才可以對密碼進(jìn)行讀取,這樣可以一定程度確保序列化對象的數(shù)據(jù)安全。
以上就是千鋒Java培訓(xùn)教學(xué)課之Java序列化的全部內(nèi)容了,朋友們,你們學(xué)到了嗎?
千鋒教育:
千鋒武漢校區(qū):
武漢校區(qū)地址:武漢市光谷大道61號智慧園21號樓2層
面授課程:全棧WEB+培訓(xùn)、全鏈路設(shè)計培訓(xùn)、PHP全棧+服務(wù)器集群培訓(xùn)、JavaEE+分布式開發(fā)培訓(xùn)、大數(shù)據(jù)+人工智能培訓(xùn)、 Unity游戲開發(fā)培訓(xùn)、Python培訓(xùn)、云計算+Python運(yùn)維培訓(xùn)、全棧軟件測試培訓(xùn)、Android培訓(xùn)、iOS培訓(xùn)