当前位置: 首页 > news >正文

做公司网站要学会什么广州市广园路建设公司网站

做公司网站要学会什么,广州市广园路建设公司网站,信誉好的企业网站开发,wordpress插件 悬浮Java 序列化Serializable详解#xff08;附详细例子#xff09; 1、什么是序列化和反序列化Serialization#xff08;序列化#xff09;是一种将对象以一连串的字节描述的过程#xff1b;反序列化deserialization是一种将这些字节重建成一个对象的过程。 2、什么情况下需要… Java 序列化Serializable详解附详细例子 1、什么是序列化和反序列化Serialization序列化是一种将对象以一连串的字节描述的过程反序列化deserialization是一种将这些字节重建成一个对象的过程。   2、什么情况下需要序列化 a当你想把的内存中的对象保存到一个文件中或者数据库中时候b当你想用套接字在网络上传送对象的时候c当你想通过RMI传输对象的时候 3、如何实现序列化 将需要序列化的类实现Serializable接口就可以了Serializable接口中没有任何方法可以理解为一个标记即表明这个类可以序列化。   4、序列化和反序列化例子 如果我们想要序列化一个对象首先要创建某些OutputStream(如FileOutputStream、ByteArrayOutputStream等)然后将这些OutputStream封装在一个ObjectOutputStream中。这时候只需要调用writeObject()方法就可以将对象序列化并将其发送给OutputStream记住对象的序列化是基于字节的不能使用Reader和Writer等基于字符的层次结构。而反序列的过程即将一个序列还原成为一个对象需要将一个InputStream(如FileInputstream、ByteArrayInputStream等)封装在ObjectInputStream内然后调用readObject()即可。   package com.sheepmu; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable;public class MyTest implements Serializable {private static final long serialVersionUID 1L;private String nameSheepMu;private int age24;public static void main(String[] args){//以下代码实现序列化try {ObjectOutputStream oos new ObjectOutputStream(new FileOutputStream(my.out));//输出流保存的文件名为 my.out ObjectOutputStream能把Object输出成Byte流MyTest myTestnew MyTest();oos.writeObject(myTest); oos.flush(); //缓冲流 oos.close(); //关闭流} catch (FileNotFoundException e) { e.printStackTrace();} catch (IOException e) {e.printStackTrace();} fan();//调用下面的 反序列化 代码}public static void fan()//反序列的过程{ ObjectInputStream oin null;//局部变量必须要初始化try{oin new ObjectInputStream(new FileInputStream(my.out));} catch (FileNotFoundException e1){ e1.printStackTrace();} catch (IOException e1){e1.printStackTrace();} MyTest mts null;try {mts (MyTest ) oin.readObject();//由Object对象向下转型为MyTest对象} catch (ClassNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} System.out.println(namemts.name); System.out.println(agemts.age); } } 会在此项目的工作空间生成一个 my.out文件。序列化后的内容稍后补齐先看反序列化后输出如下   nameSheepMuage24 5、序列化ID 序列化 ID 在 Eclipse 下提供了两种生成策略一个是固定的 1L一个是随机生成一个不重复的 long 类型数据实际上是使用 JDK 工具生成在这里有一个建议如果没有特殊需求就是用默认的 1L 就可以这样可以确保代码一致时反序列化成功。这也可能是造成序列化和反序列化失败的原因因为不同的序列化id之间不能进行序列化和反序列化。   6.序列化前和序列化后的对象的关系 是 还是equal or 是浅复制还是深复制  答案深复制反序列化还原后的对象地址与原来的的地址不同 序列化前后对象的地址不同了但是内容是一样的而且对象中包含的引用也相同。换句话说通过序列化操作,我们可以实现对任何可Serializable对象的”深度复制deep copy——这意味着我们复制的是整个对象网而不仅仅是基本对象及其引用。对于同一流的对象他们的地址是相同说明他们是同一个对象但是与其他流的对象地址却不相同。也就说只要将对象序列化到单一流中就可以恢复出与我们写出时一样的对象网而且只要在同一流中对象都是同一个。   7.静态变量能否序列化 若把上面的代码中的 age变量前加上 static ,输出任然是 nameSheepMuage24 但是看下面的例子   package com.sheepmu; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class MyTest implements Serializable {private static final long serialVersionUID 1L;private String nameSheepMu;private static int age24;public static void main(String[] args){//以下代码实现序列化try {ObjectOutputStream oos new ObjectOutputStream(new FileOutputStream(my.out));//输出流保存的文件名为 my.out ObjectOutputStream能把Object输出成Byte流MyTest myTestnew MyTest();oos.writeObject(myTest); oos.flush(); //缓冲流 oos.close(); //关闭流} catch (FileNotFoundException e) { e.printStackTrace();} catch (IOException e) {e.printStackTrace();} fan();//调用下面的 反序列化 代码}public static void fan(){new MyTest().nameSheepMu_1;//!!!!!!!!!!!!!!!!重点看这两行 更改部分age1;//!!!!!!!!!!!!!!!!!!!重点看这两行 更改部分ObjectInputStream oin null;//局部变量必须要初始化try{oin new ObjectInputStream(new FileInputStream(my.out));} catch (FileNotFoundException e1){ e1.printStackTrace();} catch (IOException e1){e1.printStackTrace();} MyTest mts null;try {mts (MyTest ) oin.readObject();//由Object对象向下转型为MyTest对象} catch (ClassNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} System.out.println(namemts.name); System.out.println(agemts.age); } }输出结果为   nameSheepMuage1为何把最上面代码的age变量添上static 后还是反序列化出了24呢而新的从新对变量赋值的代码不是static的得到了序列化本身的值而static的则得到的是从新附的值。原因 序列化会忽略静态变量即序列化不保存静态变量的状态。静态成员属于类级别的所以不能序列化。即 序列化的是对象的状态不是类的状态。这里的不能序列化的意思是序列化信息中不包含这个静态成员域。最上面添加了static后之所以还是输出24是因为该值是JVM加载该类时分配的值。注transient后的变量也不能序列化但是情况稍复杂稍后开篇说。 8、总结: a当一个父类实现序列化子类自动实现序列化不需要显式实现Serializable接口 b当一个对象的实例变量引用其他对象序列化该对象时也把引用对象进行序列化 c static,transient后的变量不能被序列化 转载于:https://www.cnblogs.com/cx6872/p/6049839.html
http://www.pierceye.com/news/292807/

相关文章:

  • 建网站潞城哪家强?企业网络推广技巧
  • 怎么建设网站让国外看wordpress 公司内网
  • 虚拟主机购买网站网站值不值得做seo
  • 长沙网站排名优化如何在网站做电子杂志
  • 石家庄科技网站在线解压zip网站
  • 不良网站举报中心官网做网站必须买云虚拟主机吗
  • 网站建设实习wordpress 登陆 插件下载
  • 做耳鼻喉医院网站多少钱北京网站建设营销
  • 济南网站建设就选搜点网络ok外贸平台补贴政策
  • 网站建设 学校百度快照优化培训班
  • 做阀门的英文网站怎么写西安seo服务公司排名
  • 淘宝客网站如何做推广古董手表网站
  • 网站虚拟主机查询企业文化建设的内容有哪些
  • 财经大学网站建设apicloud wordpress
  • 平面设计网站排行榜刚进外贸公司一个月多少钱
  • 企业网站最下面的那栏叫啥广州编程培训机构哪里好
  • 怎么学建设网站网站建设敬请期待图片素材
  • 滴滴出行的网站是哪家公司做的新媒体营销课程心得体会
  • 中国室内设计师联盟网站浙江手机版建站系统开发
  • 网站开源代码模版广州公司注册核名查询系统官网
  • 海外网站seo丹阳市住房建设管理局网站
  • 定制公司网站沙市做网站weisword
  • 平湖模板网站建设公司网站建设项目报告书
  • 校园门户网站解决方案手机与电脑网站制作
  • 济南网站建设 伍际网络网站域名备案授权书
  • 网站开发销售提成网站建设的内部风险分析
  • 网站建设框架都有哪些内容公司名字大全参考2022
  • 成功备案的网站增加域名黄金网站
  • 学习网站开发多少钱北京网页设计公司兴田德润可以吗
  • 如何加强门户网站建设上海好的设计公司