java物件流程與序列化

來源:互聯網
上載者:User

標籤:ade   public   ado   input   main   tput   輸出資料流   方法   等等   

Object流,直接把obj寫入或讀出.

前言:

比如 畫圖的程式,咣當畫一個三角形出來,咣當畫一正方形出來。然後存檔,當你下次再開啟軟體的時候三角形、方塊還在原來的位置上。如果用物件導向的思維,三角形,方塊都有自己的成員變數,x、y座標、顏色、線的顏色、粗細等,你存檔的時候要把這些內容寫到硬碟上,寫到檔案裡,這叫存檔。比如說一個方塊,你存檔的時候只要把起始點的座標,寬度,高度顏色等等存進去,當再顯示的時候再在原處把它畫出來。

序列化:把一個object直接轉換成位元組流寫到硬碟上或者寫到網路上。

實際在記憶體中會new出方塊的一個對象來,有它各種的屬性,存檔的時候要挨著把這些屬性都給存到檔案裡,用DataOutputStream就可以實現,不管它的屬性是int,dubbo等。既然把這個object的內容都要寫到硬碟上,何不把整個object全部寫進去呢,因為把object  new出來的時候無非也就是記憶體裡的一塊地區,也就是一個位元組一個位元組的,乾脆把整個位元組,這一小塊記憶體全都寫進硬碟,更合適,更方便,這就是object的初衷。當然New出來的對象除了自己的屬性外,還有標識object的版本號碼,this、super指標,相關的內容都會寫進去。這就是object流的作用。這就是序列化。

java.io.Serializable:

可序列化的。如果想吧一個類的對象寫到硬碟上或者網路上,想把它序列化成一個位元組流,必須實現序列化介面。

可序列化類別的所有子類型本身都是可序列化的。

沒有方法,標記性的介面,給編譯器看的,編譯器看到這個介面後就知道這個類能被序列化。

例子程式:

package lhy.io;import java.io.*;public class TestObjectIO {    public static void main(String args[]) throws Exception {        T t = new T();        t.k = 8;        //寫對象,.dat儲存資料的檔案        //檔案輸出資料流        FileOutputStream fos = new FileOutputStream("d:/share/testobjectio.dat");        //套一層對象輸出資料流        ObjectOutputStream oos = new ObjectOutputStream(fos);        //寫對象        oos.writeObject(t);        oos.flush();        oos.close();                //讀取        FileInputStream fis = new FileInputStream("d:/share/testobjectio.dat");        ObjectInputStream ois = new ObjectInputStream(fis);        //讀一個Object        T tReaded = (T)ois.readObject();        //10  9  2.3  0   小洋仔,transient標識的成員變數k,不能被序列化,是int預設值0        System.out.println(tReaded.i + " " + tReaded.j + " "                     + tReaded.d + " " + tReaded.k+" "+tReaded.str);            }}/** * 實現序列化介面 */class T implements Serializable{    int i = 10;    int j = 9;    double d = 2.3;    //transient:透明的,序列化的時候不予考慮    transient int k = 15;    String str = "小洋仔";}

 

java物件流程與序列化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.