序列化的實現:將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements Serializable只是為了標註該對象是可被序列化的,然後使用壹個輸出流(如:FileOutputStream)來構造壹個 ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。
簡單來說 序列化就是把Java對象儲存在某壹地方(硬盤、網絡),以便於傳輸
問題二:什麽是序列化 序列化是將對象狀態轉換為可保持或傳輸的格式的過程。與序列化相對的是反序俯化,它將流轉換為對象。這兩個過程結合起來,可以輕松地存儲和傳輸數據。
問題三:java對象的序列化是什麽意思 1、序列化是幹什麽的?
簡單說就是為了保存在內存中的各種對象的狀態,並且可以把保存的對象狀態再讀出來。雖然妳可以 用自己的各種方法來保存Object states,
但是Java給妳提供壹種應該比妳自己好的保存對象狀態的機制、那就是序列化。
2、什麽情況下需要序列化?
a)當妳想把的內存中的對象保存到壹個文件或者數據庫中時候。
b)當妳想用套接字在網絡上傳送對象的時候
c)當妳想通過RMI傳輸對象的時候(RMI->Remote Method Invocation 遠程方法調用)
3、當對壹個對象實現序列化時,究竟發生了什麽?
在沒有序列化前,每個保存在堆(Heap)中的對象都有相應的狀態(state),即實體變量(instance ariable)
例如:Foo myFoo=new Foo(); myFoo.setWidth(20); myFoo.setHeight(40);
問題四:Java中為什麽要序列化?什麽時候用到序列化? 序列化可以將內存中的類寫入文件或數據庫中。比如將某個類序列化後存為文件,下次讀取時只需將文件中的數據反序列化就可以將原先的類還原到內存中。也可以將類序列化為流數據進行傳輸。總的來說就是將壹個已經實例化的類轉成文件存儲,下次需要實例化的時候只要反序列化即可將類實例化到內存中並保留序列化時類中的所有變量和狀態。
例如:hibernate中實體類的鈍化就是將類序列化後存入磁盤並釋放內存空間。
問題五:JAVA中,序列化是指的什麽?有何用途? 序列化就是壹種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網絡之間。序列化是為了解決在對對象流進行讀寫操作時所引發的問題。序列化的實現:將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements Serializable只是為了標註該對象是可被序列化的,然後使用壹個輸出流(如:FileOutputStream)來構造壹個ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。
序列化:序列化是將對象轉換為容易傳輸的格式的過程。例如,可以序列化壹個對象,然後使用 HTTP 通過 Internet 在客戶端和服務器之間傳輸該對象。在另壹端,反序列化將從該流重新構造對象。
是對象永久化的壹種機制。
確切的說應該是對象的序列化,壹般程序在運行時,產生對象,這些對象隨著程序的停止運行而消失,但如果我們想把某些對象(因為是對象,所以有各自不同的特性)保存下來,在程序終止運行後,這些對象仍然存在,可以在程序再次運行時讀取這些對象的值,或者在其他程序中利用這些保存下來的對象。這種情況下就要用到對象的序列化。
對象序列化的最主要的用處就是在傳遞,和保存對象(object)的時候,保證對象的完整性和可傳遞性。譬如通過網絡傳輸,或者把壹個對象保存成壹個文件的時候,要實現序列化接口
問題六:在JAVA中什麽叫序列化和反序列化 30分 序列化是將對象狀態轉換為可保持或傳輸的格式的過程。與序列化相對的是反序列化,它將流轉換為對象。這兩個過程結合起來,可以輕松地存儲和傳輸數據。
問題七:將數據序列化有什麽作用啊? 啊?序列化?應該是說壹個數據結構,比如二叉樹之類,序列化以後會變成壹個char數組或者壹個string字符串這樣,方便妳存到文件裏面或者通過網絡傳輸。然後要恢復的時候就是“反序列化”,把文件裏讀出來/從網絡收到的char數組或者string恢復成壹棵二叉樹或者其他什麽東西。
主要就是方便保存
問題八:C#序列化和反序列化到底是什麽意思? 序列化就是把壹個對象保存到壹個文件或數據庫字段中去,反序列化就是在適當的時候把這個文件再轉化成原來的對象使用。
我想最主要的作龔有:
1、在進程下次啟動時讀取上次保存的對象的信息
2、在不同的AppDomain或進程之間傳遞數據
3、在分布式應用系統中傳遞數據
問題九:c#中什麽叫序列化操作? 在C#中序列化操作簡單點來理解就是把內存的東西寫到硬盤中,當然也可以寫到內存中,而反序列化就是從硬盤中把信息讀到內存中。 下面以 BinaryFormatter序列化類Book作為例子說明下什麽是序列化。定義類Book: [Serializable]
public class Book
{
string name;
float price;
string author; public Book(string bookname, float bookprice, string bookauthor)
{
name = bookname;
price = bookprice;
author = bookauthor;
}
} 在類的上面增加了屬性:Serializable.(如果不加這個屬性,將拋出SerializationException異常). 通過這個屬性將Book標誌為可以序列化的.當然也有另壹種方式使類Book可以序列化,那就是實行ISerializable接口了.在這裏要註意了:Serializable屬性是不能被繼承的咯!!! 如果妳不想序列化某個變量,該怎麽處理呢?很簡單,在其前面加上屬性[NonSerialized] .比如我不想序列化 string author; 那我只需要 [NonSerialized] string author; 好了,現在請看怎麽實現序列化: 我們使用namespace: using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; 首先創建Book實例,like this: Book book = new Book(Day and Night, 30.0f, Bruce); 接著當然要創建壹個文件了,這個文件就是用來存放我們要序列化的信息了. FileStream fs = new FileStream(@C:\book.dat, FileMode.Create); 序列化的實現也很簡單,like this: BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, book); 很簡單吧!現在我列出整個原代碼,包括反序列化. static void Main(string[] args)
{
Book book = new Book(Day and Night, 30.0f, Bruce); using(FileStream fs = new FileStream(@C:\book.dat, FileMode.Create))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, book);
} book = null; using(FileStream fs = new FileStream(@C:\book.dat, FileMode.Open))
{
......>>
問題十:php 什麽是序列化 string serialize ( mixed value )
serialize() 返回字符串,此字符串包含了表示 value 的字節流,可以存儲於任何地方。
這有利於存儲或傳遞 PHP 的值,同時不丟失其類型和結構。
想要將已序列化的字符串變回 PHP 的值,可使用 unserialize()。serialize() 可處理除了 resource 之外的任何類型。甚至可以 serialize() 那些包含了指向其自身引用的數組。妳正 serialize() 的數組/對象中的引用也將被存儲。
當序列化對象時,PHP 將試圖在序列動作之前調用該對象的成員函數 __sleep()。這樣就允許對象在被序列化之前做任何清除操作。類似的,當使用 unserialize() 恢復對象時, 將調用 __wakeup() 成員函數。
註: 在 PHP 3 中,對象屬性將被序列化,但是方法則會丟失。PHP 4 打破了此限制,可以同時存儲屬性和方法。請參見類與對象中的序列化對象部分獲取更多信息。
例子 1. serialize() 示例