當前位置:首頁 » 編程語言 » java序列化的作用

java序列化的作用

發布時間: 2022-07-09 19:18:50

java 序列化有什麼意義

序列化是一種用來處理對象流的機制,將對象的內容進行流化,可以對流化的內容進行讀寫操作,也可以用於網路傳輸。序列化就是為了解決在對對象流進行讀寫操作時所引發的問題。

⑵ java序列化有什麼作用

1、序列化是干什麼的?

簡單說就是為了保存在內存中的各種對象的狀態,並且可以把保存的對象狀態再讀出來。雖然你可以用你自己的各種各樣的方法來保存Object States,但是Java給你提供一種應該比你自己好的保存對象狀態的機制,那就是序列化。

2、什麼情況下需要序列化

a)當你想把的內存中的對象保存到一個文件中或者資料庫中時候;
b)當你想用套接字在網路上傳送對象的時候;
c)當你想通過RMI傳輸對象的時候;

3、當對一個對象實現序列化時,究竟發生了什麼?

在沒有序列化前,每個保存在堆(Heap)中的對象都有相應的狀態(state),即實例變數(instance ariable)比如:

Foo myFoo = new Foo();
myFoo .setWidth(37);
myFoo.setHeight(70);

當通過下面的代碼序列化之後,MyFoo對象中的width和Height實例變數的值(37,70)都被保存到foo.ser文件中,這樣以後又可以把它 從文件中讀出來,重新在堆中創建原來的對象。當然保存時候不僅僅是保存對象的實例變數的值,JVM還要保存一些小量信息,比如類的類型等以便恢復原來的對 象。

FileOutputStream fs = new FileOutputStream("foo.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(myFoo);

4、實現序列化(保存到一個文件)的步驟

a)Make a FileOutputStream
java 代碼
FileOutputStream fs = new FileOutputStream("foo.ser");
b)Make a ObjectOutputStream

java 代碼
ObjectOutputStream os = new ObjectOutputStream(fs);
c)write the object

java 代碼
os.writeObject(myObject1);
os.writeObject(myObject2);
os.writeObject(myObject3);
d) close the ObjectOutputStream

java 代碼
os.close();

5、舉例說明

java 代碼
import java.io.*;

public class Box implements Serializable
{
private int width;
private int height;

public void setWidth(int width){
this.width = width;
}
public void setHeight(int height){
this.height = height;
}

public static void main(String[] args){
Box myBox = new Box();
myBox.setWidth(50);
myBox.setHeight(30);

try{
FileOutputStream fs = new FileOutputStream("foo.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(myBox);
os.close();
}catch(Exception ex){
ex.printStackTrace();
}
}

}

6、相關注意事項

a)當一個父類實現序列化,子類自動實現序列化,不需要顯式實現Serializable介面;
b)當一個對象的實例變數引用其他對象,序列化該對象時也把引用對象進行序列化;
c)並非所有的對象都可以序列化,,至於為什麼不可以,有很多原因了,比如:

1.安全方面的原因,比如一個對象擁有private,public等field,對於一個要傳輸的對象,比如寫到文件,或者進行rmi傳輸 等等,在序列化進行傳輸的過程中,這個對象的private等域是不受保護的。
2. 資源分配方面的原因,比如socket,thread類,如果可以序列化,進行傳輸或者保存,也無法對他們進行重新的資源分 配,而且,也是沒有必要這樣實現

把一個對象完全轉成位元組序列,方便傳輸。
就像你寄一箱餅干,因為體積太大,就全壓成粉末緊緊地一包寄出去,這就是序列化的作用。
只不過JAVA的序列化是可以完全還原的。
所謂序列化其實就是將程序中的數據(對象)通過某種方式,保存到本地中。然後把Java對象轉換為位元組序列的過程稱為對象的序列化; 對象的序列化主要有兩種

⑶ java序列化的作用

簡單的說序列化就是以某種方式將內存中的Java對象編程2進制位元組

既然是位元組,那麼處理起來就很方便,可以存儲起來,也可以存在文件中、或者發送給別人。

Java平台允許我們在內存中創建可復用的Java對象,但一般情況下,只有當JVM處於運行時,這些對象才可能存在,即,這些對象的生命周期不會比JVM的生命周期更長(即每個對象都在JVM中)

但在現實應用中,就可能要停止JVM運行,但有要保存某些指定的對象,並在將來重新讀取被保存的對象。這是Java對象序列化就能夠實現該功能。(可選擇入資料庫、或文件的形式保存)

但是有時候,是需要在網路上傳輸某些對象,如當使用RMI(遠程方法調用),也需要用到序列化和反序列化

親,如果回答滿意,親即時採納,你的理解是我回答的動力,謝謝!!!

⑷ JAVA中,序列化是指的什麼有何用途

序列化,指將對象轉換為位元組序列的過程。
用途:
當你想把內存中的對象狀態保存到一個文件中或者資料庫中時候。
在webservice裡面我用到過,將java
object和field塞到xml裡面去。。。其他的不清楚

⑸ java 中的序列化是什麼意思有什麼好處

序列化 (Serialization)將對象的狀態信息轉換為可以存儲或傳輸的形式的過程。
序列化是針對自定義類型或者零散數據,好處就是讓數據方便存儲和傳輸(傳遞),你可以理解為將零散的字母變成一個字元串(當然實際序列化過程並不是這么簡單),可以統一存儲和傳輸,而標准序列化傳遞後,還可以依次讀取出來。
序列化的目的是標准化和可存儲,通常用於資料庫、文件操作以及和系統標准化函數進行通信。

⑹ java中為什麼要進行對象序列化

對象的序列化就是為了數據傳輸,在你的代碼的里是對象格式,而在傳輸的時候不可能還保持這對象的樣子。
當兩個進程在進行遠程通信時,彼此可以發送各種類型的數據。無論是何種類型的數據,都會以二進制序列的形式在網路上傳送。發送方需要把這個java對象轉換為位元組序列,才能在網路上傳送;接收方則需要把位元組序列再恢復為java對象。
1.概念
序列化:把java對象轉換為位元組序列的過程。
反序列化:把位元組序列恢復為java對象的過程。
2.用途
對象的序列化主要有兩種用途:
1)
把對象的位元組序列永久地保存到硬碟上,通常存放在一個文件中;
2)
在網路上傳送對象的位元組序列。

⑺ 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() ;
}
}

⑻ Java序列化有什麼作用

Object serialization 允許你將實現了Serializable介面的對象轉換為位元組序列,這些位元組序列可以被完全存儲以備以後重新生成原來的對象。

舉個例子:
網路傳輸的時候,可以傳字元串,亦可以傳對象object,例如socket,傳字元串的時候接收方很容易解析出來,但是,傳一個對象的時候,對方讀完位元組流後,不知道你傳的什麼對象,所以沒辦法給轉成原來的對象並解析對象的屬性,這時候就要用到序列化和反序列化。
類實現序列化介面,socket發送這個對象的位元組流,接收方到流後就可以將流反序列化成對象,然後使用對象的方法和屬性。

--這里只講了一個網路傳輸方面的應用,其實還有很多作用的,可以自己研究下

熱點內容
安卓插口是什麼型號圖片 發布:2024-05-03 01:01:57 瀏覽:252
移動android開發 發布:2024-05-03 00:26:42 瀏覽:628
安卓上的字體怎麼放大 發布:2024-05-03 00:26:38 瀏覽:304
奧迪a3低配中配推薦哪個配置 發布:2024-05-03 00:22:12 瀏覽:242
python類聲明變數類型 發布:2024-05-03 00:22:05 瀏覽:641
碼資料庫 發布:2024-05-03 00:15:03 瀏覽:557
旗魚影視緩存教程 發布:2024-05-02 23:57:46 瀏覽:592
c語言中的階層 發布:2024-05-02 23:52:14 瀏覽:861
qt編程快速入門 發布:2024-05-02 23:41:04 瀏覽:974
linux搭建域名伺服器 發布:2024-05-02 23:28:36 瀏覽:362