1. 什麼是java序列化
一、序列化和反序列化的概念
把對象轉換為位元組序列的過程稱為對象的序列化。
把位元組序列恢復為對象的過程稱為對象的反序列化。
對象的序列化主要有兩種用途:
1) 把對象的位元組序列永久地保存到硬碟上,通常存放在一個文件中;
2) 在網路上傳送對象的位元組序列。
二、什麼場景會涉及序列化和反序列化的概念
在很多應用中,需要對某些對象進行序列化,讓它們離開內存空間,入住物理硬碟,以便長期保存。比如最常見的是Web伺服器中的Session對象,當有 10萬用戶並發訪問,就有可能出現10萬個Session對象,內存可能吃不消,於是Web容器就會把一些session先序列化到硬碟中,等要用了,再把保存在硬碟中的對象還原到內存中。
作者:燁楓_邱
2. Java 二進制數組怎樣序列化
在JAVA中,所謂序列化,是指將一個對象變為Byte[]然後Output出去。反序列化,是指將Byte[]重新變為對象,讀入內存中。所以,你所說的「二進制數組」,本身就是序列化的結果形式,已不能且不必再序列化。
3. 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() ;
}
}
4. java序列化有什麼作用
有利於把一個Java對象變成位元組流的形式傳出去。
有利於從一個位元組流中恢復一個Java對象。
有利於使用的java對象要在分布式中使用或者在rmi遠程調用的網路中使用,實現java序列化介面。
5. 什麼是java序列化,如何實現java序列化
序列化的定義:任何數據都是以二進制的形式存貯到硬碟或是在網路上傳送,而Java為了能將Java對象存貯到硬碟上或在網路上傳送,把Java對象轉換成位元組流進行傳輸,這個轉換過程就稱之為Java序列化。
Java序列化實現方式:如果需要將一個Java類序列化,這個Java類必須實現Serializable介面,這個介面中並沒有需要實現的方法,只是標注這個類的對象可以被序列化。
6. 什麼是java序列化,如何實現序列化
簡單來說,如果你只是自己同一台機器的同一個環境下使用同一個JVM來操作,序列化和反序列化是沒必要的,當需要進行數據傳輸的時候就顯得十分必要。比如你的數據寫到文件里要被其他人的電腦的程序使用,或者你電腦上的數據需要通過網路傳輸給其他人的程序使用,像伺服器客戶端的這種模型就是一種應用,這個時候,大家想想,每個人的電腦配置可能不同,運行環境可能也不同,位元組序可能也不同,總之很多地方都不能保證一致,所以為了統一起見,我們傳輸的數據或者經過文件保存的數據需要經過序列化和編碼等操作,相當於交互雙方有一個公共的標准,按照這種標准來做,不管各自的環境是否有差異,各自都可以根據這種標准來翻譯出自己能理解的正確的數據。
除了在持久化對象時會用到對象序列化之外,當使用RMI(遠程方法調用),或在網路中傳遞對象時,都會用到對象序列化。實現序列化:
1 首先要把准備要序列化類,實現 Serializabel介面
importjava.io.Serializable;
{
//本類可以序列化
privateStringname;
privateintage;
publicPerson(Stringname,intage)
{
this.name=name;this.age=age;
}
publicStringtoString()
{
return"姓名:"+this.name+",年齡"+this.age;
}
}
2 序列化
packageorg.lxh.SerDemo;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.ObjectOutputStream;
{
//序列化
publicstaticvoidmain(String[]args)throwsException
{
//序列化後生成指定文件路徑
Filefile=newFile("D:"+File.separator+"person.ser");
ObjectOutputStreamoos=null;
//裝飾流(流)
oos=newObjectOutputStream(newFileOutputStream(file));
//實例化類
Personper=newPerson("張三",30);
oos.writeObject(per);
//把類對象序列化
oos.close();
}
}
需要注意的是:
靜態成員是不能被序列化的,因為靜態成員是隨著類的載入而載入的,與類共存亡,並且靜態成員的默認初始值都是0;就是說靜態成員屬於類級別的,所以不能序列化,序列化只是序列化了對象而已。
7. Java中如何實現序列化,有什麼意義
序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間。序列化是為了解決對象流讀寫操作時可能引發的問題(如果不進行序列化可能會存在數據亂序的問題)。
要實現序列化,需要讓一個類實現Serializable介面,該介面是一個標識性介面,標注該類對象是可被序列化的,然後使用一個輸出流來構造一個對象輸出流並通過writeObject(Object)方法就可以將實現對象寫出(即保存其狀態);如果需要反序列化則可以用一個輸入流建立對象輸入流,然後通過readObject方法從流中讀取對象。序列化除了能夠實現對象的持久化之外,還能夠用於對象的深度克隆。
8. Java序列化的位元組數組怎樣用AS解析
public class Test extends Thread {
public static void main(String[] args){
byte[] b=new byte[]{'a','b'};
System.out.println(new String(b));
}
}
位元組應用在io輸入輸出里比較多,文件的讀寫,對象序列化等等,位元組就8位列印出來的就ASCII碼里的基本字元,
9. java 序列化數組輸入/輸出問題
在序列化和反序列化進程中需要特殊處理的 Serializable 類應該實現以下方法:
private void writeObject(java.io.ObjectOutputStream stream)
throws IOException;
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException;
private void readObjectNoData()
throws ObjectStreamException;
10. 什麼是java序列化 csdn
樓主您好
序列化 (Serialization)將對象的狀態信息轉換為可以存儲或傳輸的形式的過程。
序列化是針對自定義類型或者零散數據,好處就是讓數據方便存儲和傳輸(傳遞),你可以理解為將零散的字母變成一個字元串(當然實際序列化過程並不是這么簡單),可以統一存儲和傳輸,而標准序列化傳遞後,還可以依次讀取出來。
序列化的目的是標准化和可存儲,通常用於資料庫、文件操作以及和系統標准化函數進行通信。