关于Java对象序列化您不知道的5件事
文章出处: http://java.chinaitlab.com/base/807715.html
Java对象序列化是JDK1.1中引入的一组开创性特性之一,之前51CTO也曾介绍过Java序列化的机制和原理,这里我们将使用Person来发现您可能不知道的关于Java对象序列化的5件事。
实际上,序列化的思想是“冻结”对象状态,传输对象状态(写到磁盘、通过网络传输等等),然后“解冻”状态,重新获得可用的Java对象。所有这些事情的发生有点像是魔术,这要归功于ObjectInputStream/ObjectOutputStream类、完全保真的元数据以及程序员愿意用Serializable标识接口标记他们的类,从而“参与”这个过程。清单1显示一个实现Serializable的Person类。
1.清单1.SerializablePerson
2.packagecom.tedneward;
3.
4.publicclassPerson
5.implementsjava.io.Serializable
6.{
7.publicPerson(Stringfn,Stringln,inta)
8.{
9.this.firstName=fn;this.lastName=ln;this.age=a;
10.}
11.
12.publicStringgetFirstName(){returnfirstName;}
13.publicStringgetLastName(){returnlastName;}
14.publicintgetAge(){returnage;}
15.publicPersongetSpouse(){returnspouse;}
16.
17.publicvoidsetFirstName(Stringvalue){firstName=value;}
18.publicvoidsetLastName(Stringvalue){lastName=value;}
19.publicvoidsetAge(intvalue){age=value;}
20.publicvoidsetSpouse(Personvalue){spouse=value;}
21.
22.publicStringtoString()
23.{
24.return"[Person:firstName="+firstName+
25."lastName="+lastName+
26."age="+age+
27."spouse="+spouse.getFirstName()+
28."]";
29.}
30.
31.privateStringfirstName;
32.privateStringlastName;
33.privateintage;
34.privatePersonspouse;
35.
36.}
将Person序列化后,很容易将对象状态写到磁盘,然后重新读出它,下面的JUnit4单元测试对此做了演示。
37.清单2.对Person进行反序列化
38.publicclassSerTest
39.{
40.@TestpublicvoidserializeToDisk()
41.{
42.try
43.{
44.com.tedneward.Personted=newcom.tedneward.Person("Ted","Neward",39);
45.com.tedneward.Personcharl=newcom.tedne
相关文档:
public class MainThread1{
public static void main(String args[]){
MinorThread m1=new MinorThread(1);
MinorThread m2=new MinorThread(2);
new Thread(m1).start();
new Thread(m2).start();
}
}
class MinorThrea ......
Constant Pool常量池的概念:
在讲到String的一些特殊情况时,总会提到String Pool或者Constant Pool,但是我想很多人都不太
明白Constant Pool到底是个怎么样的东西,运行的时候存储在哪里,所以在这里先说一下Constant Pool的内容.
String Pool是对应于在Constant Pool中存储String常量的区域.习惯称为String Pool,也有人称 ......
在Java里面,两个整数相除得到是个整数,比如 int a = 28;
int b = 10;
a/b == 2; //true
在Flex中,上面Java代码将返回同样的结果。值得注意的是,如果使用的是Number类,则有所不一样了。下面的代码中,result的值为2.8。如果你不小心把返回的结果作为数组的索引去取值的话,那么什么结果都没有。
var a:Number = 28 ......
《Java与模式》首先阐述了代码的设计原则,又描述了怎样来创建一个类或对象,紧接着告诉大家怎样来组织这些类和对象来实现功能。它是设计模式,而不是架构模式。
OO面向对象编程,实质上是面向抽象编程,即面向接口编程。所谓的面向接口编程,指类之间都要使用接口来通信。类来封装对象的行为,接口来封装类之间的通信方法 ......
插入式排序运行效率N*(N-1)/4 对于随机数字,这个算法比冒泡快1倍,比选择排序稍微快一点.
如果是基本有序的队列则优势最为明显需要O(N)
代码一样是从冒泡排序继承下来的.
/**
*
* @author leon.lee
*/
public class InsertSort extends BubbleSort {
public InsertSort(int lengthArray){
......