對象流(對象序列化與反序列化)
ObjectOutputStream和ObjectInputStream 序列化:把對象寫到一個輸入流中;反序列化:從一個輸入流中讀取一個對象。Serializable序列化接口沒有方法或字段,僅用于標識可序列化的語義。
序列化步驟:
1.創建一個對象輸出流,,該輸出流可以包裝其他類型輸出流
2.通過這個類的writeObject()來寫對象
反序列化:
1.創建一個對象輸入流,它可以包裝其它類型的輸入流
2.通過該對象輸入流的readObject()方法來讀取對象
要序列化的對象要實現Serializable這個接口 要注意讀取的順序
每個對象的hashcode是唯一的,也就是說內存地址是唯一,直到被銷毀。
在String“= =”比較的是地址,equals()比較的是內容,在Object中,“==”比較的是地址,equals()比較的是地址(如果不重寫此方法),重寫后可比較內容
1
//存儲數據,序列化對象數組
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
//讀取數據,反序列化對象數組
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
}
該代碼中存儲的是對象數組

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22
