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

网站是什么松江大学城网站建设

网站是什么,松江大学城网站建设,网站转微信小程序开发,泰州做网站多少钱目录 1、序列化Serialize和反序列化的概念 2、序列化和反序列化的代码演示#xff1a; 3、序列化多个对象#xff08;序列化集合#xff09; 4、transient关键字将部分属性不参与序列化 1、序列化Serialize和反序列化的概念 在内存和硬盘的数据交互过程中#xff0c;将…目录 1、序列化Serialize和反序列化的概念 2、序列化和反序列化的代码演示 3、序列化多个对象序列化集合 4、transient关键字将部分属性不参与序列化 1、序列化Serialize和反序列化的概念 在内存和硬盘的数据交互过程中将Java对象拆分的过程 序列化就是将Java内存中的Java对象切割成像序列一样传递到硬盘文件中存储 拆分对象 反序列化就是通过硬盘序列好的Java对象组装重新返回到Java内存中组装对象 图示 2、序列化和反序列化的代码演示 序列化 通过代码演示来加深理解 首先创建一个普通的Student学生类这个学生类没有实现任何接口就是普通的 package com.lbj.javase.bean;import java.io.Serializable;public class Student{private int no;private String name;public Student() {}public Student(int no, String name) {this.no no;this.name name;}public int getNo() {return no;}public void setNo(int no) {this.no no;}public String getName() {return name;}public void setName(String name) {this.name name;}//重写toString方法Overridepublic String toString() {return Student{ no no , name name \ };} }再创建一个测试类将Student对象进行序列化 package com.lbj.javase.bean;import java.io.FileOutputStream; import java.io.ObjectOutputStream;public class ObjectOutputStreamTest01{public static void main(String[] args) throws Exception{//创建java对象Student snew Student(123,zhangsan);//包装类FileOutputStream fosnew FileOutputStream(student);//序列化ObjectOutputStream oosnew ObjectOutputStream(fos);//序列化对象oos.writeObject(s);//刷新oos.flush();//关闭oos.close();} }报错 总结 Student是一个普通的类并不支持序列化需要加上Serializable的实现结构 修改测试此时的Student类实现了Serializable接口 package com.lbj.javase.bean;import java.io.Serializable;//Serializable只是一个标志性接口这个接口其实什么都不写 public class Student implements Serializable {private int no;private String name;public Student() {}public Student(int no, String name) {this.no no;this.name name;}public int getNo() {return no;}public void setNo(int no) {this.no no;}public String getName() {return name;}public void setName(String name) {this.name name;}//重写toString方法Overridepublic String toString() {return Student{ no no , name name \ };} }测试 package com.lbj.javase.bean;import java.io.FileOutputStream; import java.io.ObjectOutputStream;public class ObjectOutputStreamTest01{public static void main(String[] args) throws Exception{//创建java对象Student snew Student(123,zhangsan);//包装类FileOutputStream fosnew FileOutputStream(student);//序列化ObjectOutputStream oosnew ObjectOutputStream(fos);//序列化对象oos.writeObject(s);//刷新oos.flush();//关闭oos.close();} }测试结果 总结 1、参与序列化和反序列化的对象必须实现Serializable接口 2、Serializable接口只是一个标志性接口这个接口中什么也没有只是起到让java虚拟机看到这个类实现了这个接口可能对这个类特殊的待遇java虚拟机会默认提供这个序列化的版本号序列化版本号是用来区分序列化的类是否发生改变用来达到安全性 3、java虚拟机会自动序列化版本号缺点。一旦被序列化的类A的代码确定后不能进行后续的修改只要修改必定会重新编译此时类A会生成全新的序列化版本号这时候java虚拟机会认为这是一个全新的类这样就不好了会反序列化不成功因为反序列化是根据序列化版本号进行重新读取 4、结论凡是一个类实现了Serializable接口建议给该类一个固定不变的序列化版本号这样以后这个类即使代码修改了但是版本号不变java虚拟机会认为是同一个类Idea中可以生成一个序列化版本号自己去探索或者自己写一个也行P756 ----------------------------------------------------------------------------------------------------------------------------------- 反序列化 代码演示 package com.lbj.javase.bean;import java.io.FileInputStream; import java.io.ObjectInputStream;public class ObjectInputStreamTest01 {public static void main(String[] args) throws Exception{//包装类FileInputStream fisnew FileInputStream(student);//序列化ObjectInputStream oisnew ObjectInputStream(fis);//开始反序列化,读Object objois.readObject();//输出obj内容//反序列化回来是一个学生对象所以会调用学生对象的toString方法System.out.println(obj.toString());//关闭流ois.close();} }输出结果 Student{no123, namezhangsan} 3、序列化多个对象序列化集合 代码演示 创建一个实现Serializeable接口的Student类 package com.lbj.javase.bean;import java.io.Serializable;//Serializable只是一个标志性接口这个接口其实什么都不写 public class Student implements Serializable {private int no;private String name;public Student() {}public Student(int no, String name) {this.no no;this.name name;}public int getNo() {return no;}public void setNo(int no) {this.no no;}public String getName() {return name;}public void setName(String name) {this.name name;}//重写toString方法Overridepublic String toString() {return Student{ no no , name name \ };} }序列化 package com.lbj.javase.bean;import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List;public class ObjectOutputStreamTest02 {public static void main(String[] args) throws Exception{//创建一个集合对象ListStudent listnew ArrayList();//添加集合数据list.add(new Student(111,lisi));list.add(new Student(222,Wanwu));list.add(new Student(333,liliu));//输出流FileOutputStream fosnew FileOutputStream(students);//序列化ObjectOutputStream oosnew ObjectOutputStream(fos);//序列化一个集合这个杰辉对象中放了很多其他对象oos.writeObject(list);//刷新流oos.flush();//关闭流oos.close();} }反序列化 package com.lbj.javase.bean;import java.io.FileInputStream; import java.io.ObjectInputStream; import java.util.List;public class ObjectInputStreamTest02 {public static void main(String[] args) throws Exception{//输入流FileInputStream fisnew FileInputStream(students);//反序列化ObjectInputStream oisnew ObjectInputStream(fis);// Object objois.readObject(); // System.out.println(obj.toString());//用列表形式输出ListStudent list (ListStudent) ois.readObject();//集合的循环输出for (Student s:list) {System.out.println(s);}//关闭流ois.close();} }结果 Student{no111, namelisi} Student{no222, nameWanwu} Student{no333, nameliliu} 注意如果不用集合直接存储多个对象在存储第二个对象的时候会报错 4、transient关键字将部分属性不参与序列化 transient表示游离的不参与序列化只要给属性加上此限制即可 演示 结果数据变成null
http://www.zqtcl.cn/news/707931/

相关文章:

  • 旅游网站建设ppt自己动手制作网站
  • 做注册任务的网站有哪些seo搜索排名优化
  • 用php做网站和go做网站网站建设 完成
  • 做平面设计在那个网站上找图好网站广告出价平台
  • 网站点击率查询wordpress忘记后台账号
  • 网站怎么做全屏的网站建设报价比较表
  • 商城网站项目案例简单的明星个人网站建设论文
  • 腾讯云建网站如何利用谷歌云做自己的网站
  • 合肥网站搭建著名的网站建设公司
  • win7的iis怎么制作网站网页制作基础代码
  • 黄页网站大全免费网在线进一步优化供给推动消费平稳增长
  • dw中怎样做网站链接网页版qq登录入口账号密码
  • 外贸网站建设soho中国建设银行网站易方达消费
  • 淘宝客网站推广怎么做图文识别微信小程序是什么
  • 郑州网站建设、北京做网页公司
  • 代码错误网站wordpress主题屏蔽更新
  • 建五金方面的网站广告联盟app手机版
  • 宜宾建设网站公众号怎么制作流程
  • 上海崇明网站建设崇信县门户网站首页
  • 北京手机版建站系统开发学网页设计需要什么学历
  • 英文网站备案互联网排名前十的公司2021
  • 网站外部外链建设如何开发wordpress主题
  • 个人网站首页内容辽宁省建设网站
  • 二建证从住房建设厅网站调出流程需求分析 网站
  • 鞋子网站模板做网站开发学什么软件
  • 网站建设的需求客户中企动力科技股份有限公司招聘
  • 小程序定制 seo营销seo托管公司
  • 杭州网站设计公司联系亿企邦网站建设在电访销售话术
  • 安康网站开发公司报价网站开发人员考核
  • 谷歌网站 百度清苑住房和城乡建设局网站