摘要:序列化是干什么的簡(jiǎn)單說(shuō)就是為了保存在內(nèi)存中的各種對(duì)象的狀態(tài)也就是實(shí)例變量,不是方法,并且可以把保存的對(duì)象狀態(tài)再讀出來(lái)。備注當(dāng)子類實(shí)現(xiàn)序列化時(shí)父類自動(dòng)序列化
package com.test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class Test { public static void main(String[] args) { Myfoo myfoo = new Myfoo(); myfoo.setHigth(27); myfoo.setWidth(12); try { ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:foo.txt")); out.writeObject(myfoo); ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:foo.txt")); Myfoo m = (Myfoo)in.readObject(); System.out.println(m.getHigth()); System.out.println(m.getWidth()); System.out.println(m.age); System.out.println(); out.close(); in.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch(ClassNotFoundException e){ }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ } } } class Myfoo extends MyfooFather implements Serializable{ private static final long serialVersionUID = 1L; int Higth ; int Width ; public int getHigth() { return Higth; } public void setHigth(int higth) { Higth = higth; } public int getWidth() { return Width; } public void setWidth(int width) { Width = width; } } class MyfooFather{ int age = 30; }
1、序列化是干什么的?
簡(jiǎn)單說(shuō)就是為了保存在內(nèi)存中的各種對(duì)象的狀態(tài)(也就是實(shí)例變量,不是方法),并且可以把保存的對(duì)象狀態(tài)再讀出來(lái)。雖然你可以用你自己的各種各樣的方法來(lái)保存object states,但是Java給你提供一種應(yīng)該比你自己好的保存對(duì)象狀態(tài)的機(jī)制,那就是序列化。
2、什么情況下需要序列化
a)當(dāng)你想把的內(nèi)存中的對(duì)象狀態(tài)保存到一個(gè)文件中或者數(shù)據(jù)庫(kù)中時(shí)候;
b)當(dāng)你想用套接字在網(wǎng)絡(luò)上傳送對(duì)象的時(shí)候;
c)當(dāng)你想通過(guò)RMI傳輸對(duì)象的時(shí)候;
Myfoo myfoo = new Myfoo();
myfoo.setHigth(27);
myfoo.setWidth(12);
當(dāng) 通過(guò)下面的代碼序列化之后,MyFoo對(duì)象中的width和Height實(shí)例變量的值(37,70)都被保存到foo.txt文件中,這樣以后又可以把它 從文件中讀出來(lái),重新在堆中創(chuàng)建原來(lái)的對(duì)象。當(dāng)然保存時(shí)候不僅僅是保存對(duì)象的實(shí)例變量的值,JVM還要保存一些小量信息,比如類的類型等以便恢復(fù)原來(lái)的對(duì) 象。
備注: 當(dāng)子類實(shí)現(xiàn)序列化時(shí) 父類自動(dòng)序列化
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/65759.html
摘要:由以上結(jié)果分析可知,靜態(tài)變量不能被序列化,示例讀取出來(lái)的是在內(nèi)存中存儲(chǔ)的值。關(guān)鍵字總結(jié)修飾的變量不能被序列化只作用于實(shí)現(xiàn)接口只能用來(lái)修飾普通成員變量字段不管有沒(méi)有修飾,靜態(tài)變量都不能被序列化好了,棧長(zhǎng)花了半天時(shí)間,終于整理完了。 先解釋下什么是序列化 我們的對(duì)象并不只是存在內(nèi)存中,還需要傳輸網(wǎng)絡(luò),或者保存起來(lái)下次再加載出來(lái)用,所以需要Java序列化技術(shù)。 Java序列化技術(shù)正是將對(duì)象轉(zhuǎn)...
摘要:對(duì)象序列化對(duì)象序列化機(jī)制允許把內(nèi)存中的對(duì)象轉(zhuǎn)換成與平臺(tái)無(wú)關(guān)的二進(jìn)制流,從而可以保存到磁盤或者進(jìn)行網(wǎng)絡(luò)傳輸,其它程序獲得這個(gè)二進(jìn)制流后可以將其恢復(fù)成原來(lái)的對(duì)象。 對(duì)象序列化 對(duì)象序列化機(jī)制允許把內(nèi)存中的Java對(duì)象轉(zhuǎn)換成與平臺(tái)無(wú)關(guān)的二進(jìn)制流,從而可以保存到磁盤或者進(jìn)行網(wǎng)絡(luò)傳輸,其它程序獲得這個(gè)二進(jìn)制流后可以將其恢復(fù)成原來(lái)的Java對(duì)象。 序列化機(jī)制可以使對(duì)象可以脫離程序的運(yùn)行而對(duì)立存在 ...
摘要:在中,對(duì)象的序列化與反序列化被廣泛應(yīng)用到遠(yuǎn)程方法調(diào)用及網(wǎng)絡(luò)傳輸中。相關(guān)接口及類為了方便開(kāi)發(fā)人員將對(duì)象進(jìn)行序列化及反序列化提供了一套方便的來(lái)支持。未實(shí)現(xiàn)此接口的類將無(wú)法使其任何狀態(tài)序列化或反序列化。 序列化與反序列化 序列化 (Serialization)是將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^(guò)程。一般將一個(gè)對(duì)象存儲(chǔ)至一個(gè)儲(chǔ)存媒介,例如檔案或是記億體緩沖等。在網(wǎng)絡(luò)傳輸過(guò)程中,可以...
摘要:的序列化是將一個(gè)對(duì)象表示成字節(jié)序列,該字節(jié)序列包括了對(duì)象的數(shù)據(jù),有關(guān)對(duì)象的類型信息和存儲(chǔ)在對(duì)象中的數(shù)據(jù)類型。任何實(shí)現(xiàn)了接口的類都可以被序列化。一旦對(duì)象被序列化或者重新裝配,就會(huì)分別調(diào)用那兩個(gè)方法。 Java序列化 1. 什么是序列化? 序列化是將一個(gè)對(duì)象的狀態(tài),各屬性的值序列化保存起來(lái),然后在合適的時(shí)候通過(guò)反序列化獲得。 Java的序列化是將一個(gè)對(duì)象表示成字節(jié)序列,該字節(jié)序列包括了對(duì)象...
摘要:的序列化是將一個(gè)對(duì)象表示成字節(jié)序列,該字節(jié)序列包括了對(duì)象的數(shù)據(jù),有關(guān)對(duì)象的類型信息和存儲(chǔ)在對(duì)象中的數(shù)據(jù)類型。這個(gè)是根據(jù)類名接口名成員方法及屬性等來(lái)生成一個(gè)位的哈希字段,因?yàn)樵黾恿俗侄危虼松傻牟灰粯恿恕? Java序列化 什么是序列化? 序列化是將一個(gè)對(duì)象的狀態(tài),各屬性的值序列化保存起來(lái),然后在合適的時(shí)候通過(guò)反序列化獲得。 Java的序列化是將一個(gè)對(duì)象表示成字節(jié)序列,該字節(jié)序列包括了對(duì)...
摘要:從的序列化和反序列化說(shuō)起序列化是將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^(guò)程,而相反的過(guò)程就稱為反序列化。當(dāng)使用接口來(lái)進(jìn)行序列化與反序列化的時(shí)候需要開(kāi)發(fā)人員重寫(xiě)與方法。 從java的序列化和反序列化說(shuō)起 序列化 (Serialization)是將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^(guò)程,而相反的過(guò)程就稱為反序列化。 在java中允許我們創(chuàng)建可復(fù)用的對(duì)象,但是這些對(duì)象僅僅存在j...
閱讀 2773·2023-04-25 17:21
閱讀 2627·2021-11-23 09:51
閱讀 2936·2021-09-24 10:32
閱讀 3899·2021-09-23 11:33
閱讀 2037·2019-08-30 15:44
閱讀 3521·2019-08-30 11:18
閱讀 3628·2019-08-30 10:53
閱讀 701·2019-08-26 13:25