java为什么要序列化Java中序列化作用是什么?为什么要序列化?

序列化 3

java 如何实现序列化 有什么意义

序列化的过程就是对象写入字节流和从字节流中读取对象。 java对象序列化可以保留一个对象的数据,而且还可以递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的“深复制”,即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。 序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例。

什么是序列化,为什么要序列化

对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以...

问一下 java中的序列化是什么意思?? 有什么作用??

所谓序列化其实就是将程序中的数据(对象)通过某种方式,保存到本地中。 然后可以在程序关闭之后还保存程序的某个执行状态,方便在程序下次 执行的时候通过"反序列化"读取出来,并且能够还原数据的类型,从而延续程序退出时的状态。 一般来说,我们会使用序列化保存一些需要持久化的数据,当然如果这个数据会比较庞大的话, 我们就直接使用数据库了!所以,序列化实际上目前很多领域用的已经不多了,大部分使用 都已被数据库替代了!

java中为什么要进行对象序列化?

序列化其实很好理解,假如你现在做一个项目,项目是分工合作的,并且你喝其他小组成员不在同一个城市,那么你要如何把你写的那些类给其他小组成员呢?这个时候就要用到序列化了,简单的说:序列化就是将内存中的类或者对象(你写的类都是存储在内存中的)变成可以存储到存储媒介中的流,你将类序列化成流之后可以通过互联网传输给别人,你也可以反序列化将别人的序列化流转换成内存中的对象,就这么简单

Java中对象序列化的作用是什么?

如题?平时开发的时候,eclipse会自动提示pojo类序列化。 简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候;

java中如何实现序列化,有什么意义

首先我们要把准备要序列化类,实现 Serializabel接口 例如:我们要Person类里的name和age都序列化 import java.io.Serializable; public class Person implements Serializable { //本类可以序列化 private String name ; private int age ; public Person(String name,int age){ this.name = name ; this.age = age ; } public String toString(){ return "姓名:" + this.name + ",年龄" + this.age ; } } 然后:我们将name和age序列化(也就是把这2个对象转为二进制,统族理解为“打碎”) .lxh.SerDemo; import java.io.File; import java.io.FileOutputStream; import java.io.ObjectOutputStream ; public class ObjectOutputStreamDemo { //序列化 public static void main(String[] args) throws Exception { //序列化后生成指定文件路径 File file = new File("D:" + File.separator + "person.ser") ; ObjectOutputStream oos = null ; //装饰流(流) oos = new ObjectOutputStream(new FileOutputStream(file)) ; //实例化类 Person per = new Person("张三",30) ; oos.writeObject(per) ;//把类对象序列化 oos.close() ; } }

java 为什么序列化?为什么不是所有的类序列化

简单来说序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,流的概念这里不用多说(就是I/O),我们可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间(注:要想将对象传输于网络必须进行流化)!在对对象流进行读写操作时会引发一些问题,而序列化机制正是用来解决这些问题的! 如上所述,读写对象会有什么问题呢?比如:我要将对象写入一个磁盘文件而后再将其读出来会有什么问题吗?别急,其中一个最大的问题就是对象引用!举个例子来说:假如我有两个类,分别是A和
B,B类中含有一个指向A类对象的引用,现在我们对两个类进行实例化{ A a = new A(); B b = new B(); },这时在内存中实际上分配了两个空间,一个存储对象a,一个存储对象b,接下来我们想将它们写入到磁盘的一个文件中去,就在写入文件时出现了问题!因为对象b包含对对象a的引用,所以系统会自动的将a的数据复制一份到b中,这样的话当我们从文件中恢复对象时(也就是重新加载到内存中)时,内存分配了三个空间,而对象a同时在内存中存在两份,想一想后果吧,如果我想修改对象a的数据的话,那不是还要搜索它的每一份拷贝来达到对象数据的一致性,这不是我们所希望的! 以下序列化机制的解决方案:
1.保存到磁盘的所有对象都获得一个序列号(
1, 2, 3等等)
2.当要保存一个对象时,先检查该对象是否被保存了。
3.如果以前保存过,只需写入"与已经保存的具有序列号x的对象相同"的标记,否则,保存该对象 通过以上的步骤序列化机制解决了对象引用的问题! 序列化的实现 将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。 为什么不是所有的类都序列化? 很重要的一个原因就是为了安全,java的类安全机制是做的很好的. 对于一个你要传输的对象,比如写到文件,或者进行rmi传输等等,在传输的过程中, 这个对象的private等域是不受保护的. 还有就是一些资源分配的问题,比如thread,序列化是很难对他重新分配资源, 所以并非所有的类都可以序列化.

java编程:请问序列化有什么好处?

序列化是,将数据分解成字节流,以便存储在文件中或在网络上传输。

java 中的序列化是什么意思

简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。
(1)什么情况下需要序列化 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候;
(2)当对一个对象实现序列化时,究竟发生了什么? 在没有序列化前,每个保存在堆(Heap)中的对象都有相应的状态(state),即实例变量(instance ariable)比如: Foo myFoo = new Foo(); myFoo .setWidth(37); myFoo.setHeight(70); 当通过下面的代码序列化之后,MyFoo对象中的width和Height实例变量的值(37,70)都被保存到foo.ser文件中,这样以后又可以把它 从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实例变量的值,JVM还要保存一些小量信息,比如类的类型等以便恢复原来的对 象。 FileOutputStream fs = new FileOutputStream("foo.ser"); ObjectOutputStream os = new ObjectOutputStream(fs); os.writeObject(myFoo);
(3)实现序列化(保存到一个文件)的步骤 a)Make a FileOutputStream java 代码 FileOutputStream fs = new FileOutputStream("foo.ser"); b)Make a ObjectOutputStream java 代码 ObjectOutputStream os = new ObjectOutputStream(fs); c)write the object java 代码 os.writeObject(myObject1); os.writeObject(myObject2); os.writeObject(myObject3); d) close the ObjectOutputStream java 代码 os.close();
(4)举例说明 java 代码 import java.io.*; public class Box implements Serializable { private int width; private int height; public void setWidth(int width){ this.width = width; } public void setHeight(int height){ this.height = height; } public static void main(String[] args){ Box myBox = new Box(); myBox.setWidth(50); myBox.setHeight(30); try{ FileOutputStream fs = new FileOutputStream("foo.ser"); ObjectOutputStream os = new ObjectOutputStream(fs); os.writeObject(myBox); os.close(); }catch(Exception ex){ ex.printStackTrace(); } } } 总结:安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,或者进行rmi传输 等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分 配,而且,也是没有必要这样实现。

Java中序列化作用是什么?为什么要序列化?

序列化是可以讲对象长期保存在硬盘上,或通过网络传递给远端,可以序列化的对象要实现Serializable接口,此接口中没有方法,是一个标志,说明实现此接口的类可以启动并使用系列化功能; 序列化本质上是将对象解析成二进制流,并且实现Serializable接口的子类都有序列化功能;

标签: #保罗 #网页 #小米 #系统 #打不开 #图层 #要学 #文件