java編程學(xué)習(xí):序列化學(xué)習(xí)知識干貨

Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言珍特。Java 技術(shù)具有卓越的通用性祝峻、高效性、平臺移植性和安全性,廣泛應(yīng)用于PC莱找、數(shù)據(jù)中心酬姆、游戲控制臺、科學(xué)超級計算機宋距、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群症脂。

給你學(xué)習(xí)路線:html-css-js-jq-javase-數(shù)據(jù)庫-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm

Java 提供了一種對象序列化的機制谚赎,該機制中,一個對象可以被表示為一個字節(jié)序列诱篷,該字節(jié)序列包括該對象的數(shù)據(jù)壶唤、有關(guān)對象的類型的信息和存儲在對象中數(shù)據(jù)的類型。

小編推薦一個學(xué)Java的學(xué)習(xí)裙【 七六零棕所,二五零闸盔,五四一 】,無論你是大牛還是小白琳省,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)迎吵!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享针贬!

將序列化對象寫入文件之后击费,可以從文件中讀取出來,并且對它進行反序列化桦他,也就是說蔫巩,對象的類型信息、對象的數(shù)據(jù)快压,還有對象中的數(shù)據(jù)類型可以用來在內(nèi)存中新建對象圆仔。

整個過程都是Java 虛擬機(JVM)獨立的,也就是說蔫劣,在一個平臺上序列化的對象可以在另一個完全不同的平臺上反序列化該對象坪郭。

類ObjectInputStream 和 ObjectOutputStream 是高層次的數(shù)據(jù)流,它們包含序列化和反序列化對象的方法脉幢。

ObjectOutputStream 類包含很多寫方法來寫各種數(shù)據(jù)類型截粗,但是一個特別的方法例外:

上面的方法序列化一個對象,并將它發(fā)送到輸出流鸵隧。相似的ObjectInputStream 類包含如下反序列化一個對象的方法:

該方法從流中取出下一個對象绸罗,并將對象反序列化。它的返回值為Object豆瘫,因此珊蟀,你需要將它轉(zhuǎn)換成合適的數(shù)據(jù)類型。

為了演示序列化在Java中是怎樣工作的,我將使用之前教程中提到的Employee類育灸,假設(shè)我們定義了如下的Employee類腻窒,該類實現(xiàn)了Serializable 接口。

請注意磅崭,一個類的對象要想序列化成功儿子,必須滿足兩個條件:

該類必須實現(xiàn)java.io.Serializable 對象。

該類的所有屬性必須是可序列化的砸喻。如果有一個屬性不是可序列化的柔逼,則該屬性必須注明是短暫的。

如果你想知道一個Java 標(biāo)準(zhǔn)類是否是可序列化的割岛,請查看該類的文檔愉适。檢驗一個類的實例是否能序列化十分簡單, 只需要查看該類有沒有實現(xiàn) java.io.Serializable接口癣漆。

小編推薦一個學(xué)Java的學(xué)習(xí)裙【 七六零维咸,二五零,五四一 】惠爽,無論你是大牛還是小白癌蓖,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具婚肆,很多干貨和技術(shù)資料分享费坊!

序列化對象

ObjectOutputStream 類用來序列化一個對象,如下的 SerializeDemo 例子實例化了一個 Employee 對象旬痹,并將該對象序列化到一個文件中附井。

該程序執(zhí)行后,就創(chuàng)建了一個名為employee.ser 文件两残。該程序沒有任何輸出永毅,但是你可以通過代碼研讀來理解程序的作用。

注意: 當(dāng)序列化一個對象到文件時人弓, 按照 Java 的標(biāo)準(zhǔn)約定是給文件一個 .ser 擴展名沼死。

反序列化對象

下面的DeserializeDemo 程序?qū)嵗朔葱蛄谢?tmp/employee.ser 存儲了 Employee 對象。

以上程序編譯運行結(jié)果如下所示:

這里要注意以下要點:

readObject() 方法中的 try/catch代碼塊嘗試捕獲 ClassNotFoundException 異常崔赌。對于 JVM 可以反序列化對象意蛀,它必須是能夠找到字節(jié)碼的類。如果JVM在反序列化對象的過程中找不到該類健芭,則拋出一個 ClassNotFoundException 異常县钥。

小編推薦一個學(xué)Java的學(xué)習(xí)裙【 七六零,二五零慈迈,五四一 】若贮,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具谴麦,很多干貨和技術(shù)資料分享蠢沿!

注意,readObject() 方法的返回值被轉(zhuǎn)化成 Employee 引用匾效。

當(dāng)對象被序列化時舷蟀,屬性SSN 的值為 111222333,但是因為該屬性是短暫的面哼,該值沒有被發(fā)送到輸出流野宜。所以反序列化后 Employee 對象的 SSN 屬性為 0。

無論是實現(xiàn)Serializable接口精绎,或是Externalizable接口速缨,當(dāng)從I/O流中讀取對象時锌妻,readResolve()方法都會被調(diào)用到代乃。實際上就是用readResolve()中返回的對象直接替換在反序列化過程中創(chuàng)建的對象。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仿粹,一起剝皮案震驚了整個濱河市搁吓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吭历,老刑警劉巖堕仔,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異晌区,居然都是意外死亡摩骨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門朗若,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恼五,“玉大人,你說我怎么就攤上這事哭懈≡致” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵遣总,是天一觀的道長睬罗。 經(jīng)常有香客問我,道長旭斥,這世上最難降的妖魔是什么容达? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮垂券,結(jié)果婚禮上董饰,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好卒暂,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布啄栓。 她就那樣靜靜地躺著,像睡著了一般也祠。 火紅的嫁衣襯著肌膚如雪昙楚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天诈嘿,我揣著相機與錄音堪旧,去河邊找鬼。 笑死奖亚,一個胖子當(dāng)著我的面吹牛淳梦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昔字,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼爆袍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了作郭?” 一聲冷哼從身側(cè)響起陨囊,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎夹攒,沒想到半個月后蜘醋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡咏尝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年压语,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片编检。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡胎食,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒙谓,到底是詐尸還是另有隱情斥季,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布累驮,位于F島的核電站酣倾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏谤专。R本人自食惡果不足惜躁锡,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望置侍。 院中可真熱鬧映之,春花似錦拦焚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蠢甲,卻和暖如春僵刮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹦牛。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工搞糕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人曼追。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓窍仰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親礼殊。 傳聞我的和親對象是個殘疾皇子驹吮,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • JAVA序列化機制的深入研究 對象序列化的最主要的用處就是在傳遞,和保存對象(object)的時候,保證對象的完整...
    時待吾閱讀 10,864評論 0 24
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法膏燕,內(nèi)部類的語法钥屈,繼承相關(guān)的語法悟民,異常的語法坝辫,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • 逢年過節(jié),只要是回到老家射亏,就會與一幫很早就輟學(xué)但卻是從小一起玩到大的發(fā)小聚一聚近忙,喝酒從來不會少了,香煙也是一根接著...
    攝影師哈姆雷特閱讀 635評論 0 0
  • 莫辰逸感覺到了陣陣涼意智润,但由于寒風(fēng)的關(guān)系及舍,使他睜不開眼睛。 「既然醒了窟绷,就別躺著了锯玛。」一道稚嫩的女聲兼蜈。 ...
    shin桑閱讀 242評論 1 1