黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Java面向?qū)ο?/div>
Java異常
Java數(shù)組
Java常用類
Java集合
Java IO流
Java線程
Java反射
Socket編程
Java注解開發(fā)
Java GoF設(shè)計模式
HashMap
Java內(nèi)存模型
Java線性表

Java對象輸入輸出流

對象序列化:把一個對象轉(zhuǎn)換為01二進(jìn)制

對象反序列化:把一組01二進(jìn)制轉(zhuǎn)換為對象

ObjectOutputStream類可以實現(xiàn)對象序列化, 把對象轉(zhuǎn)換為01序列保存到文件中

ObejctInputStream類實現(xiàn)對象反序列化,從文件中讀取01序列轉(zhuǎn)換為對象

注意:

對象序列化/反序列化的前提是對象的類必須實現(xiàn)Serializable接口, 該接口是一個標(biāo)志接口,沒有任何方法,只是告訴編譯器這個類的對象可以序列化。

package com.wkcto.chapter06.objectstream;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;

/**
 * 使用ObjectOutputStream可以實現(xiàn)對象的序列化, 把對象的01序列保存到文件中
 * 
 * @author 蛙課網(wǎng)
 *
 */
public class Test01 {
	public static void main(String[] args) throws IOException {
		//創(chuàng)建Person對象
		Person lisi = new Person("lisi", 18);
		
		//把lisi對象序列化, 就是把lisi對象保存到文件中
		OutputStream out = new FileOutputStream("d:/obj.txt");
		ObjectOutputStream oos = new ObjectOutputStream(out);
		
		oos.writeObject(lisi); 		//對象序列化
		
		oos.close();
		
	}
}
package com.wkcto.chapter06.objectstream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;

/**
 * 使用ObjectInputStream類實現(xiàn)對象的反序列化,
 * 		就是從文件中把保存的對象讀取出來
 * 
 * @author 蛙課網(wǎng)
 *
 */
public class Test02 {

	public static void main(String[] args) throws IOException, ClassNotFoundException {
		InputStream in = new FileInputStream("d:/obj.txt");
		ObjectInputStream ois = new ObjectInputStream(in);
		
		Object obj = ois.readObject();  	//從文件中讀取一個對象, readObject()方法的返回值是Object類型的
		//文件中實際存儲的是Person對象, 使用obj引用指向Person對象
		
		System.out.println( obj ); 		//實際上調(diào)用的是Person對象的toString()方法
		ois.close();
		
		/*
		 * 在對象序列化之后 ,即把對象已經(jīng)保存到文件中了,  又在Person類中添加了一個字段,修改了Person類結(jié)構(gòu),
		 * 	再進(jìn)行反序列化時, 出現(xiàn)了異常:
		 *  java.io.InvalidClassException:
		 *  	com.wkcto.chapter06.objectstream.Person; local class incompatible: 
		 * 		stream classdesc serialVersionUID = 3479771803741762411, 
		 * 		local class serialVersionUID = 1549311491347595402
		 * 分析原因:
		 * 		流中類的描述信息中 serialVersionUID的值與本地字節(jié)碼文件中 serialVersionUID字段的值不相等引發(fā)的異常
		 * 
		 * 		當(dāng)類Person實現(xiàn)了Serializable接口后, 系統(tǒng)會自動的在Person類中增加一個serialVersionUID序列化版本號字段
		 * 		在lisi對象序列化時, serialVersionUID字段的值是: 3479771803741762411
		 * 		當(dāng)序列化后, 又在Person類添加了gender字段, 編譯后,在字節(jié)碼文件中重新生成了一個serialVersionUID的值:1549311491347595402
		 * 		在進(jìn)行反序列化時, 系統(tǒng)會檢查流中serialVersionUID序列化版本號字段與本地字節(jié)碼文件中serialVersionUID字段的值是否一樣
		 * 			如果相等就認(rèn)為是同一個類的對象, 如果這個serialVersionUID序列化版本號字段的值不相等,就認(rèn)為是不同類的對象
		 * 解決方法:
		 * 		保證反序列化時流中serialVersionUID字段 的值,與本地字節(jié)碼文件中serialVersionUID字段的值相等即可
		 * 		可以在Person類實現(xiàn)了Serializable接口后, 手動的添加一個serialVersionUID字段 
		 */
		
	}

}
package com.wkcto.chapter06.objectstream;

import java.io.Serializable;
/**
 * Person類的對象要想序列化, Person類必須實現(xiàn)Serializable接口
 * 		Serializable接口是一個標(biāo)志接口,沒有任何方法
 * @author 蛙課網(wǎng)
 *
 */
public class Person implements Serializable{
	String  name;
	int age;
	
	String gender; 		//性別
	
	//手動的添加序列化版本號字段
	 private static final long serialVersionUID = -1345649873215667710L;
	
	
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", gender=" + gender + "]";
	}


	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	
}

 

主站蜘蛛池模板: h国产在线观看 | 欧美中文字幕在线播放 | 麻豆一区区三三四区产品麻豆 | 国内一级野外a一级毛片 | 欧美精品18xxxhd4k | 久久国产综合精品欧美 | 国产激情在线 | 成人影视免费观看 | 中文字幕日韩专区 | 久久精品午夜视频 | 美女被cao免费看在线看网站 | 韩日精品 | 亚洲午夜精品久久久久久抢 | 精品欧美一区二区三区 | 日韩在线观看一区二区三区 | 亚洲 中文 欧美 日韩 在线人 | 免费污污视频在线观看 | 黄色片香蕉视频 | 亚洲天堂久久新 | 欧美日韩 在线播放 | 亚洲欧美中文v日韩v在线 | 亚洲国产一区二区三区综合片 | 一级黄色片一 | 羞羞色在线观看 | 天天舔| 香蕉茄子视频 | 欧美一级欧美三级在线 | 国产成人福利 | 亚洲精品国精品久久99热 | 国产成人精品综合久久久软件 | 日韩欧美网址 | 在线观看中文字幕码2022 | 欧美精品亚洲精品日韩经典 | 久久久久久久久综合影视网 | 久久久久综合一本久道 | 日本三级带日本三级带黄国产 | 一本大道在线视频 | 久久4k岛国高清一区二区 | 亚洲精品视频在线观看免费 | 欧美日韩综合在线视频免费看 | 午夜影院污网页入口 |