易截截图软件、单文件、免安装、纯绿色、仅160KB

Java中的强大武器

  所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象。这个过程也可以通过网络实现,可以先在Windows机器上创建一个对象,对其序列化,然后通过网络发给一台Unix机器,然后在那里准确无误地重新“装配”。是不是很神奇。
  也许你会说,只了解一点点,但从来没有接触过,其实未必如此。RMI、Socket、JMS、EJB你总该用过一种吧,彼此为什么能够传递Java对象,当然都是对象序列化机制的功劳。
  第一次使用Java的对象序列化是做某项目,当时要求把几棵非常复杂的树(JTree)及相应的数据保存下来(就是我们常用的保存功能),以便下次运行程序时可以继续上次的操作。
 
 那时XML技术在网上非常的热,而且功能也强大,再加上树的结构本来就和XML存储数据的格式很像。作为一项对新技术比较有爱好的我当然很想尝试一下。
不过经过仔细分析,发现假如采用XML保存数据,后果真是难以想象:哪棵树的哪个节点被展开、展开到第几级、节点当前的属性是什么。真是不知该用A、B、
C还是用1、2、3来表示。
  还好,发现了Java的对象序列化机制,问题迎刃而解,只需简单的将每棵树的根节点序列化保存到硬盘上,下次再通过反序列化后的根节点就可以轻松的构造出和原来一模一样的树来。
  其实保存数据,尤其是复杂数据的保存正是对象序列化的典型应用。最近另一个项目就碰到了需要对非常复杂的数据进行存取,通过使用对象的序列化,问题同样化难为简。
 
 对象的序列化还有另一个轻易被大家忽略的功能就是对象复制(Clone),Java中通过Clone机制可以复制大部分的对象,但是众所周
知,Clone有深层Clone和浅层Clone,假如你的对象非常非常复杂,假设有个100层的Collection(夸张了点),假如你想实现深层
Clone,真是不敢想象,假如使用序列化,不会超过10行代码就可以解决。
  还有就是Swing组件,假如你有两个很象很象(或是一模一样)的比较难以构造的Swing组件,你该怎么办,也许你想到了Clone,但是偏偏Java的Swing组件没有提供Clone方法。别急,使用序列化,6行代码搞定:
  ByteArrayOutputStream
  byteOut = new ByteArrayOutputStream();
  ObjectOutputStream out
  = new ObjectOutputStream(byteOut);
  out.writeObject(combo);
  ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
  ObjectInputStream in
  =new Obj


相关文档:

Java编程那些事儿7_io

Java编程那些事儿84——IO简介
I/O处理技术是Java语言中实现文件操作、内存操作、控制台输入以及网络编程的基础,但是由于I/O技术本身的设计原因,也使得I/O处理技术的难度比较大,需要花费比较大的精力进行学习。
  11.1 I/O简介
在程序中,输入和输出都是相对于当前程序而言的,例如从硬盘上读取一个配 ......

几道比较基础的Java面试题

相当基础,但是还是蛮不错的。
一、创建一个静态方法,给它传入一个对象,请循环的打印出该对象所在类的类名和所实现的方法名(华为笔试最后一道编程)  
二、假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等  
三、给你一组字符串如:iu7i8hy4jnb2,让你编 ......

Java学习心得(转自张国宝)


1.    数组有没有length()这个方法? String有没有length()这个方法?
        答:数组没有length()这个方法,有length的属性。
        String有length()这个方法。
2.     String s = new String("xyz") ......

java解析properties的方法

1。使用java.util.Properties类的load()方法
示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name));
Properties p = new Properties();
p.load(in);
2。使用java.util.ResourceBundle类的getBundle()方法
示例: ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号