序列化與反序列化是指Java物件與位元組序列的相互轉換,一般在保存或傳輸位元組序列的時候會用到,下面有兩個Java實現序列化與反序列化的簡單範例,不過還是先來看看序列與反序列化的具體概念:
1.Java序列化與反序列化
Java序列化是指把Java物件轉換為位元組序列的過程;而Java反序列化是指把位元組序列恢復為Java物件的過程。
2.為什麼需要序列化與反序列化
我們知道,當兩個進程進行遠端通訊時,可以相互發送各種類型的數據,包括文字、圖片、音訊、視訊等, 而這些數據都會以二進位序列的形式在網路上傳送。那麼當兩個Java進程進行通訊時,能否實現進程間的物件傳送呢?答案是可以的。如何做到呢?這就需要Java序列化與反序列化了。換句話說,一方面,發送方需要把這個Java物件轉換為位元組序列,然後在網路
傳送;另一方面,接收方需要從位元組序列中恢復出Java物件。
當我們明晰了為什麼需要Java序列化和反序列化後,我們很自然地會想Java序列化的好處。其好處一是實現了資料的持久化,透過序列化可以把資料永久地保存到硬碟上(通常存放在檔案裡),二是,利用序列化實現遠端通信,即在網路上傳送物件的位元組序列。
3.範例:
(1)序列化反序列化檔案:
import java.io.*; @SuppressWarnings("serial") class Person implements Serializable { public Person(String name, String sex, int age, int height) { this.name = name; this.sex = sex; this.age = age; this.height = height; } public String toString() { return "|" + this.name + "|" + this.sex + "|" + this.age + "|" + this.height + "|"; } public String name; public String sex; public int age; public int height; } public class SerialTest { public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException { Person p = new Person("Jim", "male", 28, 194); // 开始序列化 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream( new File("myTest.txt"))); oos.writeObject(p); // 反序列化 ObjectInputStream ois = new ObjectInputStream(new FileInputStream( new File("myTest.txt"))); Person p1 = (Person) ois.readObject(); System.out.println(p1.toString()); } }
(2)XML反序列化成class:
import java.io.*; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; @SuppressWarnings("serial") class RoadInfo implements Serializable { public int id; public long MDN; public String NAME; public double LNG; public double LAT; public String ICON; } @SuppressWarnings("serial") class table_list implements Serializable { public String toString() { StringBuffer sb = new StringBuffer(); for (RoadInfo r : sequence) { sb.append("|"); sb.append(r.id); sb.append("|"); sb.append(r.MDN); sb.append("|"); sb.append(r.NAME); sb.append("|"); sb.append(r.LNG); sb.append("|"); sb.append(r.LAT); sb.append("|"); sb.append(r.ICON); sb.append("|\n"); } return sb.toString(); } public table_list(int count) { sequence = new RoadInfo[count]; for (int i = 0; i < count; i++) { sequence[i] = new RoadInfo(); } } public RoadInfo[] sequence; } public class XMLTest { /** * @param args */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub StringBuffer sb = new StringBuffer(); BufferedReader reader = new BufferedReader(new FileReader(new File( "friend_msg.xml"))); while (true) { String s = reader.readLine();// 读一行 if (s == null) { break; } sb.append(s); } XStream xs = new XStream(new DomDriver()); table_list db = (table_list) xs.fromXML(sb.toString()); System.out.println(db.toString()); } }
以上就是Java實現序列化與反序列化的簡單範例的內容,更多相關內容請關注PHP中文網(www.php.cn)!

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

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

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

效率testjavaapplicationsforplatformcompatibility oftheSesteps:1)setUpautomatedTestingTestingActingAcrossMultPlatFormSusingCitoolSlikeSlikeJenkinSorgithUbactions.2)contuctualtemualtemalualTesteTESTENRETESTINGINREALHARTWARETOLEALHARDOELHARDOLEATOCATCHISSUSESUSEUSENINCIENVIRENTMENTS.3)schictcross.3)schoscross.3)

Java編譯器通過將源代碼轉換為平台無關的字節碼,實現了Java的平台獨立性,使得Java程序可以在任何安裝了JVM的操作系統上運行。

ByteCodeachievesPlatFormIndenceByByByByByByExecutedBoviratualMachine(VM),允許CodetorunonanyplatformwithTheApprepreprepvm.Forexample,Javabytecodecodecodecodecanrunonanydevicewithajvm

Java不能做到100%的平台獨立性,但其平台獨立性通過JVM和字節碼實現,確保代碼在不同平台上運行。具體實現包括:1.編譯成字節碼;2.JVM的解釋執行;3.標準庫的一致性。然而,JVM實現差異、操作系統和硬件差異以及第三方庫的兼容性可能影響其平台獨立性。

Java通過“一次編寫,到處運行”實現平台獨立性,提升代碼可維護性:1.代碼重用性高,減少重複開發;2.維護成本低,只需一處修改;3.團隊協作效率高,方便知識共享。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver CS6
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具