對(duì)象流(對(duì)象序列化與反序列化)
ObjectOutputStream和ObjectInputStream 序列化:把對(duì)象寫到一個(gè)輸入流中;反序列化:從一個(gè)輸入流中讀取一個(gè)對(duì)象。Serializable序列化接口沒有方法或字段,僅用于標(biāo)識(shí)可序列化的語義。
序列化步驟:
1.創(chuàng)建一個(gè)對(duì)象輸出流,,該輸出流可以包裝其他類型輸出流
2.通過這個(gè)類的writeObject()來寫對(duì)象
反序列化:
1.創(chuàng)建一個(gè)對(duì)象輸入流,它可以包裝其它類型的輸入流
2.通過該對(duì)象輸入流的readObject()方法來讀取對(duì)象
要序列化的對(duì)象要實(shí)現(xiàn)Serializable這個(gè)接口 要注意讀取的順序
每個(gè)對(duì)象的hashcode是唯一的,也就是說內(nèi)存地址是唯一,直到被銷毀。
在String“= =”比較的是地址,equals()比較的是內(nèi)容,在Object中,“==”比較的是地址,equals()比較的是地址(如果不重寫此方法),重寫后可比較內(nèi)容
1
//存儲(chǔ)數(shù)據(jù),序列化對(duì)象數(shù)組
2
public void ser(Object obj[]) throws Exception{
3
OutputStream ops=new FileOutputStream("D:\\test\\objcetFile.txt");
4
ObjectOutputStream out=new ObjectOutputStream(ops);
5
6
out.writeObject(obj);
7
out.close();
8
}
9
10
//讀取數(shù)據(jù),反序列化對(duì)象數(shù)組
11
public Object[] dser() throws Exception{
12
13
14
InputStream ins=new FileInputStream("D:\\test\\objcetFile.txt");
15
ObjectInputStream ois=new ObjectInputStream(ins);
16
17
Object[] obj=(Object[])ois.readObject();
18
ois.close();
19
20
return obj;
21
22
}
該代碼中存儲(chǔ)的是對(duì)象數(shù)組

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22
