搜尋
首頁Javajava教程什麼是序列化?序列化的具體介紹

一 序列化

1.什麼是序列化?

將記憶體中的物件寫入到硬碟中就是序列化,與一般輸出並無區別,只是輸出的資料是對象,不是一般的文字。

2.序列化的作用

因為資料在記憶體中的儲存是暫時的,如果需要長久保存對象,必須把對象寫入硬碟,就產生了序列化。

3.序列化的條件

一個物件要想被序號,該物件所屬的類別必須實作Serializable接口,該接口是一個標誌性接口,無任何字段與抽象方法,JVM遇到該接口將為該類別分配一個序列化版本號。

4.一個物件被序列化,該物件中的全域變數包含private類型的變數都會被寫入硬碟。

5.不能被序列化的欄位:

  1. #靜態欄位不能被序列化,靜態變數的值是目前JVM中的值,不是序列化時所設定的值。

  2. 被transient修飾的欄位不能被序列化。

6.序列化運算:

#
OutputStream ops=new FileOuptStream(path);
ObjectOuptStream oos=new ObjectOutputStream(ops);
Object obj=new Ojbect();
oos.writeObject(obj);

 

二反序列化

1.什麼是反序列化

#反序列化就是將硬碟中的資料寫入內存,取得保存在文件中的物件。

2.反序列化運算需求

反序列化的順序必須與序列化的順序一致。

3.序列化版本號

⑴序列化時會產生一個long類別數字,並稱為序列化版本號,同時儲存在序列化文件與類別文件中,反序列化時對比兩個數字,如果相同,則序列化成功;不相同,則無法反序列化。

⑵序列化版本號用來標註實體類別的版本,實體類別一旦修改,如果未明確地指定序列化版本號,系統自動生成一個新的版本號,這樣兩個版本號不同,無法序列化。 一般在需要序列化的實體類別中明確地設定序列化版本號。

⑶不是重新編譯不一定會產生一個新的序列化版本號,只有實體類別發生了改變才會產生新的序列化版本號。

⑷解析過程

反序列化時首先對比序列化檔案與類別檔案中的序列化版本號是否相同,如果相同,表明該序列化文件是由當前類文件生成的,可以反序列哈;不相同,表示不是由當前類文件生成的,版本不一致,無法反序列化。

⑸反序列運算:

InputStream is=new FileInputStream(path);
ObjectInputStream ois=new ObjectIputStream(is);
Object obj=ois.readObject();

 

以上是什麼是序列化?序列化的具體介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JVM如何促進Java的'寫作一次,在任何地方運行”(WORA)功能?JVM如何促進Java的'寫作一次,在任何地方運行”(WORA)功能?May 02, 2025 am 12:25 AM

JVM通過字節碼解釋、平台無關的API和動態類加載實現Java的WORA特性:1.字節碼被解釋為機器碼,確保跨平台運行;2.標準API抽像操作系統差異;3.類在運行時動態加載,保證一致性。

Java的較新版本如何解決平台特定問題?Java的較新版本如何解決平台特定問題?May 02, 2025 am 12:18 AM

Java的最新版本通過JVM優化、標準庫改進和第三方庫支持有效解決平台特定問題。 1)JVM優化,如Java11的ZGC提升了垃圾回收性能。 2)標準庫改進,如Java9的模塊系統減少平台相關問題。 3)第三方庫提供平台優化版本,如OpenCV。

說明JVM執行的字節碼驗證的過程。說明JVM執行的字節碼驗證的過程。May 02, 2025 am 12:18 AM

JVM的字節碼驗證過程包括四個關鍵步驟:1)檢查類文件格式是否符合規範,2)驗證字節碼指令的有效性和正確性,3)進行數據流分析確保類型安全,4)平衡驗證的徹底性與性能。通過這些步驟,JVM確保只有安全、正確的字節碼被執行,從而保護程序的完整性和安全性。

平台獨立性如何簡化Java應用程序的部署?平台獨立性如何簡化Java應用程序的部署?May 02, 2025 am 12:15 AM

Java'splatFormIndepentEncealLowsApplicationStorunonAnyOperatingsystemwithajvm.1)singleCodeBase:writeandeandcompileonceforallplatforms.2)easileupdates:updatebybytecodeforsimultanane deployment.3)testOnOneOnePlatForforurouniverSalpeforuluniverSalpehavior formafforulululyiversalivernave.444.44.444

Java的平台獨立性如何隨著時間的流逝而發展?Java的平台獨立性如何隨著時間的流逝而發展?May 02, 2025 am 12:12 AM

Java的平台獨立性通過JVM、JIT編譯、標準化、泛型、lambda表達式和ProjectPanama等技術不斷增強。自1990年代以來,Java從基本的JVM演進到高性能的現代JVM,確保了代碼在不同平台的一致性和高效性。

在Java應用程序中緩解平台特定問題的策略是什麼?在Java應用程序中緩解平台特定問題的策略是什麼?May 01, 2025 am 12:20 AM

Java如何緩解平台特定的問題? Java通過JVM和標準庫來實現平台無關性。 1)使用字節碼和JVM抽像操作系統差異;2)標準庫提供跨平台API,如Paths類處理文件路徑,Charset類處理字符編碼;3)實際項目中使用配置文件和多平台測試來優化和調試。

Java的平台獨立性與微服務體系結構之間有什麼關係?Java的平台獨立性與微服務體系結構之間有什麼關係?May 01, 2025 am 12:16 AM

java'splatformentenceenhancesenhancesmicroservicesharchitecture byferingDeploymentFlexible,一致性,可伸縮性和便攜性。 1)DeploymentFlexibilityAllowsibilityAllowsOllowsOllowSorlowsOllowsOllowsOllowSeStorunonAnyPlatformwithajvM.2)penterencyCrossServAccAcrossServAcrossServiCessImplifififiesDeevelopmentandeDe

GRAALVM與Java的平台獨立目標有何關係?GRAALVM與Java的平台獨立目標有何關係?May 01, 2025 am 12:14 AM

GraalVM通過三種方式增強了Java的平台獨立性:1.跨語言互操作,允許Java與其他語言無縫互操作;2.獨立的運行時環境,通過GraalVMNativeImage將Java程序編譯成本地可執行文件;3.性能優化,Graal編譯器生成高效的機器碼,提升Java程序的性能和一致性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版