如何用Java5更新原有代码

文章作者 100test 发表时间 2007:09:11 11:44:45
来源 100Test.Com百考试题网


  你不必重新改写应用程序也能利用Java 5的新功能。我们为你介绍不必改写大量代码就能实现更新的方法。

  你曾经得到一段以Java 1.4或更早版本编写的代码,并希望改写它以进行开发吗?这段代码当然能够在Java SE 5上正常运行,但详细了解Java SE 5的新功能会使接下来的开发过程更加顺利。下面我们来了解一些应用那些功能的简单实例,以及如何以最小的争论来介绍它们。

  我们首先从StringBuffer类开始,你可以在任何代码中找到这个连接字符串的类。下面是它的一个典型应用:

  StringBuffer sb=new StringBuffer().

  sb.append("Some strings")

  …

  sb.append(someMethod()).

  String result=sb.toString().

  StringBuffer看起来没什么特别,但它有一个难解的语义;它是线程安全的,所以你每次调用它的一个方法,都必须为它本身获得一个同步锁。现在,在大多数类型代码中,可能你不会有两个应用同样StringBuffer的线程,但StringBuffer仍然需要同步锁,这需要一小段时间。输入JavaSE 5的StringBuilder,它与StringBuffer相同,只有一点不同:它不是线程安全类,因此不需要获得同步锁。这是一个细微的性能改进,但执行起来很简单。

  StringBuilder sb=new StringBuilder().

  所有的其它方法与StringBuffer一样。按惯例,对于新代码,你应该使用StringBuilder,除非字符串确实由多线程组成。

  如果你的代码由一系列‘myString=myString appendString.’类型的操作构成,那么你的确需要改变它。在Java中,‘ ’运算符将字符串串联起来,因为Java字符串不可改变,Java编译器在后台重写它,建立一个StringBuffer,在缓冲器中进行串联并返回结果字符串。如果你在进行实际的字符串处理,你就希望用StringBuilder来代替它,使其更加简洁。只有一种情况你不希望那样做:调试或日志代码:

  System.out.println("Got " someInteger " and " someString " on " someDate

  你不必优化它,但是Java SE 5推出了一个你可能希望使用的方法printf,使打印与格式化输出更加方便。下面的代码与printf等价:

  System.out.printf("Get %d and %s on %tc%n",someInteger,someString,someDate

  如果你熟悉C语言的printf,对上面的代码就不会陌生。第一个自变量是一个格式化字符串,它使用%表示如何对下面的一个自变量进行格式化;因此%d意思是把第一个自变量打印为数字;%s指把第二个自变量打印为字符串,%c指把第三个自变量打印成格式化的日期。由于Java SE 5支持可变自变量,所以你可以向printf提交任何数量的自变量;而且它的格式化字符串指示也比C语言灵活。例如,你可以通过引用自变量的目录来多次引用一个自变量:

  System.out.printf("Get %d and %s on %tc, thats %1$d%n",someInteger

  %1$d部分很重要。如果%后面是自变量的数字目录,以$结尾,接着是格式化指示,它就从那个特殊的自变量取值。结尾处的%n生成一个换行符;如果你熟悉C语言,就知道用可插入一个新行,因为%n生成一个独立于平台的换行符,而不是。查看Sun的Java文件了解格式化指示的全部内容。它是在printf中唯一被调用的Formatter类,你也可以在自己的代码中使用。

  可变自变量是Java 5的新功能,如果你发现代码中全是为提交自变量而建立的数组,就可以使用它。如:

  process("print",new String[]).

  这里的过程方法(process method)应该为:

  private void process(String cmd,String[] args) {

  if(cmd.equals("print")) {

  for(int i=0.I



相关文章


Jbuilder6.0 Weblogic6.0完成EJB开发部署
Windows2000中如何配置JDK
JNDI连接WindowsActiveDirectory教程
Ecli e JBo MySQL开发环境的设置
如何用Java5更新原有代码
如何利用JavaBea 在应用程序中创建组件
如何使用JAAPI实现更具访问性的Java软件
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛