一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java序列化常見的三個問題

Java序列化常見的三個問題

2020-08-14 15:20xcbeyond Java教程

這篇文章主要介紹了Java序列化常見的三個問題,幫助大家更好的理解和學習JAVA,感興趣的朋友可以了解下

1、Java序列化與反序列化是什么?

Java序列化是指把Java對象轉換為字節序列的過程,而Java反序列化是指把字節序列恢復為Java對象的過程:

  • 序列化:對象序列化的最主要的用處就是在傳遞和保存對象的時候,保證對象的完整性和可傳遞性。序列化是把對象轉換成有序字節流,以便在網絡上傳輸或者保存在本地文件中。核心作用是對象狀態的保存與重建。
  • 反序列化:客戶端從文件中或網絡上獲得序列化后的對象字節流,根據字節流中所保存的對象狀態及描述信息,通過反序列化重建對象。

2、為什么需要序列化與反序列化?

為什么要序列化,那就是說一下序列化的好處嘍,序列化有什么什么優點,所以我們要序列化。

一:對象序列化可以實現分布式對象。

主要應用例如:RMI(即遠程調用Remote Method Invocation)要利用對象序列化運行遠程主機上的服務,就像在本地機上運行對象時一樣。

二:java對象序列化不僅保留一個對象的數據,而且遞歸保存對象引用的每個對象的數據。

可以將整個對象層次寫入字節流中,可以保存在文件中或在網絡連接上傳遞。利用對象序列化可以進行對象的"深復制",即復制對象本身及引用的對象本身。序列化一個對象可能得到整個對象序列。

三:序列化可以將內存中的類寫入文件或數據庫中。

比如:將某個類序列化后存為文件,下次讀取時只需將文件中的數據反序列化就可以將原先的類還原到內存中。也可以將類序列化為流數據進行傳輸。

總的來說就是將一個已經實例化的類轉成文件存儲,下次需要實例化的時候只要反序列化即可將類實例化到內存中并保留序列化時類中的所有變量和狀態。

四:對象、文件、數據,有許多不同的格式,很難統一傳輸和保存。

序列化以后就都是字節流了,無論原來是什么東西,都能變成一樣的東西,就可以進行通用的格式傳輸或保存,傳輸結束以后,要再次使用,就進行反序列化還原,這樣對象還是對象,文件還是文件。

3、如何實現Java序列化與反序列化

首先我們要把準備要序列化類,實現 Serializabel接口

例如:我們要Person類里的name和age都序列化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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個對象轉為二進制,理解為“打碎”)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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序列化常見的三個問題的詳細內容,更多關于Java序列化 的資料請關注服務器之家其它相關文章!

原文鏈接:https://cloud.tencent.com/developer/article/1604372

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 舔大逼| 欧美粗黑巨大gay | 91夜夜操| 免费在线观看网址大全 | yellow片在线观看 | 日韩成人免费aa在线看 | 男人j进女屁股视频在线观看 | 日本黄大片影院一区二区 | 能播放的欧美同性videos | 国产在线乱子伦一区二区 | 国产精品第一 | 美女在线看永久免费网址 | 好紧好爽范冰冰系列 | 我与旗袍老师疯狂床震 | 夫妻性生活免费在线观看 | ssni-497新任美脚女教师 | 动漫美女日批 | 欧美一级视 | 寡妇一级毛片 | 变态 调教 视频 国产九色 | 国产专区亚洲欧美另类在线 | 9久热这里只有精品视频在线观看 | 日本在线观看免费观看完整版 | 国产一级特黄aa大片在线 | 国产特黄a级在线视频 | 成人欧美一区二区三区黑人 | 魔兽官方小说 | 91资源站 | 非洲黑女人性xxxx | 女人pp被扒开流水了 | 亚洲精品久久久WWW游戏好玩 | 国产精品第 | 数学老师扒开腿让我爽快 | 国产激情久久久久影院小草 | 日本韩国推理片免费观看网站 | 久久伊人在 | 猥琐对着美女飞机喷到脸上 | 996热精品视频在线观看 | 久久这里只有精品视频9 | 欧美有码| 国语自产拍在线观看7m |