对象的序列化流_ObjectOutputStream
生活随笔
收集整理的這篇文章主要介紹了
对象的序列化流_ObjectOutputStream
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package com.learn.demo04.ObjectStream;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;/*java.io.ObjectOutputStream extends OutputStreamObjectOutputStream:對象的序列化流作用:把對象以流的方式寫入到文件中保存構造方法:ObjectOutputStream(OutputStream out) 創建寫入指定 OutputStream 的 ObjectOutputStream。參數:OutputStream out:字節輸出流特有的成員方法:void writeObject(Object obj) 將指定的對象寫入 ObjectOutputStream。使用步驟:1.創建ObjectOutputStream對象,構造方法中傳遞字節輸出流2.使用ObjectOutputStream對象中的方法writeObject,把對象寫入到文件中3.釋放資源*/
public class Demo01ObjectOutputStream {public static void main(String[] args) throws IOException {//1.創建ObjectOutputStream對象,構造方法中傳遞字節輸出流ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.txt"));//2.使用ObjectOutputStream對象中的方法writeObject,把對象寫入到文件中oos.writeObject(new Person("小美女",18));//3.釋放資源oos.close();}
}
package com.learn.demo04.ObjectStream;import java.io.Serializable;/*序列化和反序列化的時候,會拋出NotSerializableException沒有序列化異常類通過實現 java.io.Serializable 接口以啟用其序列化功能。未實現此接口的類將無法使其任何狀態序列化或反序列化。Serializable接口也叫標記型接口要進行序列化和反序列化的類必須實現Serializable接口,就會給類添加一個標記當我們進行序列化和反序列化的時候,就會檢測類上是否有這個標記有:就可以序列化和反序列化沒有:就會拋出 NotSerializableException異常去市場買肉-->肉上有一個藍色章(檢測合格)-->放心購買-->買回來怎么吃隨意static關鍵字:靜態關鍵字靜態優先于非靜態加載到內存中(靜態優先于對象進入到內存中)被static修飾的成員變量不能被序列化的,序列化的都是對象private static int age;oos.writeObject(new Person("小美女",18));Object o = ois.readObject();Person{name='小美女', age=0}transient關鍵字:瞬態關鍵字被transient修飾成員變量,不能被序列化private transient int age;oos.writeObject(new Person("小美女",18));Object o = ois.readObject();Person{name='小美女', age=0}*/
public class Person implements Serializable{private static final long serialVersionUID = 1L;private String name;//private static int age;//private transient int age;public int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
?
總結
以上是生活随笔為你收集整理的对象的序列化流_ObjectOutputStream的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 序列化和反序列化的概述
- 下一篇: 对象的反序列化流_ObjectInput