A. java中的序列化是什麼意思
序列化是將對象狀態轉換為可保持或傳輸的格式的過程。說白點就是你可以用內對象輸出流輸出到文件容。如果不序列化輸出的話,很可能會亂。
java中的序列化機制能夠將一個實例對象(只序列化對象的屬性值,而不會去序列化什麼所謂的方法。)的狀態信息寫入到一個位元組流中使其可以通過socket進行傳輸、或者持久化到存儲資料庫或文件系統中;然後在需要的時候通過位元組流中的信息來重構一個相同的對象。
一般而言,要使得一個類可以序列化,只需簡單實現java.io.Serializable介面即可。
B. java序列化的優點和缺點是什麼
序列化是什麼:
序列化就是將一個對象的狀態(各個屬性量)保存起來,然後在適當的時候再獲得。
序列化分為兩大部分:序列化和反序列化。序列化是這個過程的第一部分,將數據分解成位元組流,以便存儲在文件中或在網路上傳輸。反序列化就是打開位元組流並重構對象。對象序列化不僅要將基本數據類型轉換成位元組表示,有時還要恢復數據。恢復數據要求有恢復數據的對象實例
序列化的什麼特點:
如果某個類能夠被序列化,其子類也可以被序列化。聲明為static和transient類型的成員數據不能被序列化。因為static代表類的狀態, transient代表對象的臨時數據。
什麼時候使用序列化:
一:對象序列化可以實現分布式對象。主要應用例如:RMI要利用對象序列化運行遠程主機上的服務,就像在本地機上運行對象時一樣。
二:java對象序列化不僅保留一個對象的數據,而且遞歸保存對象引用的每個對象的數據。可以將整個對象層次寫入位元組流中,可以保存在文件中或在網路連接上傳遞。利用對象序列化可以進行對象的"深復制",即復制對象本身及引用的對象本身。序列化一個對象可能得到整個對象序列。
所謂優缺點就是該使用的時候就是優點,不該使用而是用就是缺點
C. java序列化有什麼作用
有利於把一個Java對象變成位元組流的形式傳出去。
有利於從一個位元組流中恢復一個Java對象。
有利於使用的java對象要在分布式中使用或者在rmi遠程調用的網路中使用,實現java序列化介面。
D. java 中的序列化是什麼意思
序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間。序列化是為了解決在對對象流進行讀寫操作時所引發的問題。
序列化的實現:將需要被序列化的類實現Serializable介面,該介面沒有需要實現的方法,implements Serializable只是為了標注該對象是可被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造一個 ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。
簡單來說 序列化就是把Java對象儲存在某一地方(硬碟、網路),以便於傳輸
E. java中如何實現序列化,有什麼意義
首先我們要把准備要序列化類,實現 Serializabel介面
例如:我們要Person類里的name和age都序列化
import java.io.Serializable;
public class Person implements Serializable { //本類可以序列化
private String name ;
private int age ;
public Person(String name,int age){
this.name = name ;
this.age = age ;
}
public String toString(){
return "姓名:" + this.name + ",年齡" + this.age ;
}
}
然後:我們將name和age序列化(也就是把這2個對象轉為二進制,統族理解為「打碎」)
package org.lxh.SerDemo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream ;
public class ObjectOutputStreamDemo { //序列化
public static void main(String[] args) throws Exception {
//序列化後生成指定文件路徑
File file = new File("D:" + File.separator + "person.ser") ; ObjectOutputStream oos = null ;
//裝飾流(流)
oos = new ObjectOutputStream(new FileOutputStream(file)) ;
//實例化類
Person per = new Person("張三",30) ; oos.writeObject(per) ;//把類對象序列化
oos.close() ;
}
}
F. java中為什麼要序列化什麼時候序列化。
序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。回可以對流化答後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間。序列化是為了解決在對對象流進行讀寫操作時所引發的問題。
序列化的實現:將需要被序列化的類實現Serializable介面,該介面沒有需要實現的方法,implements Serializable只是為了標注該對象是可被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。
G. 什麼是序列化,在java中如何實現序列化
一、什麼是序列化:
序列化理解成「打碎」是可以的,不過在書本上的名詞就是將對象轉換成二進制。
二、在java中如何實現序列化:
首先我們要把准備要序列化類,實現 Serializabel介面
例如:我們要Person類里的name和age都序列化
import java.io.Serializable;
public class Person implements Serializable { //本類可以序列化
private String name ;
private int age ;
public Person(String name,int age){
this.name = name ;
this.age = age ;
}
public String toString(){
return "姓名:" + this.name + ",年齡" + this.age ;
}
}
然後:我們將name和age序列化(也就是把這2個對象轉為二進制,統族理解為「打碎」)
package org.lxh.SerDemo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream ;
public class ObjectOutputStreamDemo { //序列化
public static void main(String[] args) throws Exception {
//序列化後生成指定文件路徑
File file = new File("D:" + File.separator + "person.ser") ; ObjectOutputStream oos = null ;
//裝飾流(流)
oos = new ObjectOutputStream(new FileOutputStream(file)) ;
//實例化類
Person per = new Person("張三",30) ; oos.writeObject(per) ;//把類對象序列化
oos.close() ;
}
}
H. 求大神,java通常在什麼情況下用到序列化
前後7級2009-09-21
我們的Java程序必須要運行在Java虛擬機中,那麼在同一個Java虛擬機進程中,換句話說是在同一快內存空間裡面,什麼地方需要用此對象,直接傳遞該對象的引用就可以了,我們想調某一個對象的方法,通過該對象的引用就可以了,傳過去就可以了;
那麼我問你,如果是不同的Java虛擬機進程呢?不同的內存空間呢?甚至我北京的計算機的Java虛擬機中的某一個類,需要使用廣州的某台計算機上的某個Java對象呢?怎麼辦?
這是不同的內存空間,你怎麼調?
補充:
對象的序列化技術,實現的手段是通過Object流,那麼我上面所說的需求,你就可以通過對象序列化,將此對象序列化之後得到一些「內容」,通過網路傳輸這部分「內容」,從廣州的伺服器上將一個對象序列化之後傳過來,到了我北京的伺服器上,再通過反序列化,在北京的伺服器內存中「造出一個對象出來」,這個對象和你序列化之前廣州伺服器上的對象是一樣的,ok,你可以隨便調方法了;
補充:
對象的序列化技術在EJB3.0中得到廣泛的使用,分布式的架構,遠程方法調用(RMI),那肯定要用到對象序列化;
客戶端通過JNDI查找到某一個EJB,那麼你調了該企業Bean的方法,傳近去的這個參數是需要序列化的,該方法的返回值,也是要序列化傳過來的;
補充:
對象的序列化就是可以將對象序列化之後便於在網路上傳輸,或者保存到物理介質上;比方說你做了個游戲,你玩了一半你想存檔,那麼存檔,就可以簡單理解為將當前游戲運行的所有對象序列化保存到硬碟上,然後你再次玩的時候,你讀取存檔,就是反序列化,「再弄出這些對象出來」,繼續運行。
I. 在JAVA中什麼叫序列化和反序列化
序列化是將對象狀態轉換為可保持或傳輸的格式的過程。與序列化相對的是反序列化,它將流轉換為對象。這兩個過程結合起來,可以輕松地存儲和傳輸數據。
J. Java中如何實現序列化,有什麼意義
序列來化就是一種用來處理對象流的自機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間。序列化是為了解決對象流讀寫操作時可能引發的問題(如果不進行序列化可能會存在數據亂序的問題)。
要實現序列化,需要讓一個類實現Serializable介面,該介面是一個標識性介面,標注該類對象是可被序列化的,然後使用一個輸出流來構造一個對象輸出流並通過writeObject(Object)方法就可以將實現對象寫出(即保存其狀態);如果需要反序列化則可以用一個輸入流建立對象輸入流,然後通過readObject方法從流中讀取對象。序列化除了能夠實現對象的持久化之外,還能夠用於對象的深度克隆。