请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3169|回复: 2

Java学习之对象序列化

[复制链接]

新浪微博达人勋

发表于 2018-6-19 16:00:42 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
对象序列化就是把对象输出为一个文件,“落实”在硬盘上,不再在内存中缥缈。
与之类似的,“类”落实在硬盘上,就是一个.class文件;又好比PS的psd文件。
反正就是把一个有用的部分保存下来,不再随着内存释放而消逝了。
输出对象.jpg
“序列化”的过程只要照葫芦画瓢就行了,主程序中的代码是说,把对象导出为工程路径下的名为June19.txt的文件;
而且,想要序列化,对象的类是必须实现Serializable接口的,虽然这是个空接口。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-6-19 16:32:56 | 显示全部楼层
由于上一个案例不方便反序列化(就是读取对象啦)
所以这里新建一个案例2:
package program13June;
import java.io.*;
public class Class13June {
public static void main(String[] args) throws Exception{
   Sum s=new Sum();
   s.x=9;
   s.y=8;
FileOutputStream fos=new FileOutputStream("sum.txt");
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(s);
System.out.println(s.f());
}
}
class Sum implements Serializable{
public int x;
public int y;
public int f(){
  return x+y;
}
}
这样,就在工程路径下有了一个sum.txt
反序列化:
package program13June;
import java.io.*;
public class Class13June {
public static void main(String[] args) throws Exception{
FileInputStream fis=new FileInputStream("sum.txt");
ObjectInputStream ois=new ObjectInputStream(fis);
Sum s2=(Sum)ois.readObject();//读取并转为Sum类
System.out.println(s2.f());
}
}
class Sum implements Serializable{
public int x;
public int y;
public int f(){
  return x+y;
}
}
输出:17
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-6-19 16:40:42 | 显示全部楼层
归纳:
x属于X类


把对象x序列化为x.txt文件:
FileOutputStream fos=new FileOutputStream("x.txt");
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(x);



x.txt文件反序列化为x对象:
FileInputStream fis=new FileInputStream("x.txt");
ObjectInputStream ois=new ObjectInputStream(fis);
X x=(X)ois.readObject();//读取并转为X类



fos,fis,oos,ois这些只是中间量
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表