T086学习网 | 站长学院 | 技术文档 | 成语 | 歇后语 | 帝国时代 | 代码收藏 | IP地址查询 | 生活百科 | 生日密码 | CSS压缩 | 用户评论 | 欣欣百宝箱

“老虎”来了 J2SE1.5新功能一览

【 天极网作者:李娟编译 更新时间:2004-09-22 | 字体:
[导读]  虽然Java版本从1.0发展到1.4.2,但Java语言本身一直没有什么大的变化,只是增加了少量关键字,所以业界一直在呼吁对Java语言进行修正,以适应新的开发技术。2004年2月Sun发布了代号为“虎”的Java 2标准版( J2SE...

  增强的 for循环

  Collections API经常使用Iterator类。 Iterator类提供在 Collection 中遍历导航的机制。当在集合和数组中遍历时,新的增强的 for 循环可取代 iterator。编译器生成必要的循环代码,因为利用范型,所以不需要额外的类型转换。

  以前

ArrayList<Integer> list = new ArrayList<Integer>();
for (Iterator i = list.iterator(); i.hasNext();)
{
 Integer value=(Integer)i.next();
}


  现在

ArrayList<Integer> list = new ArrayList<Integer>();
for (Integer i : list)
{
  ...
}


  枚举类型

  当使用 static final 型常量时,该类型提供枚举的类型。如果你以前在你自己的应用程序中使用过enum标识符,那么在利用J2SE1.5进行编译时需要修改源代码。

public enum StopLight
{
 red, amber, green
};


  静态导入

  静态导入特性实现了"import static",允许您从一个类引用静态常量,而不需要继承它。例如,我们添加一个组件的时候不需要每次都使用BorderLayout.CENTER,而是只引用CENTER就可以了。

import static java.awt.BorderLayout.*;
getContentPane().add(new JPanel(), CENTER);


  格式化输出

  开发者现在可以选择使用printf类型的函数来生成格式化输出。这样有助于将C语言应用程序中移植到Java上,这样文本布局可以基本没有什么变化。

  大部分公用的C语言的printf的格式标识符都可以用,此外一些Java类像Date和BigInteger也有了格式化规则。

System.out.printf("name count%n");
System.out.printf("%s %5d%n", user,total);


  格式化输入

  scanner应用编程接口提供了用于从系统控制台或者任何数据流读出数据的基本输入功能。下面的示例从标准输入读取一个字符串。

  如果没有数据可用的话,像next和nextInt这样的方法将阻塞。如果你需要处理更加复杂的输入,那么还有模式匹配算法,可以从java.util.Formatter类中获得。

Scanner s= new Scanner(System.in);
String param= s.next();
int value=s.nextInt();
s.close();


  可变参数

  可变参数功能允许多个参数作为传入方法的参数。它只需要简单的"..."表示法,该符号用于接收参数列表的方法,并且它还被用于实现 printf 所需参数的灵活数量。

void argtest(Object ... args)
{
 for (int i=0;i <args.length; i++) { }
}
argtest("test", "data");


  并行性实用程序

  并行实用程序库由Doug Lea定义在 JSR-166 中,是一个J2SE 1.5平台中公用的并发程序包的特殊版本。它提供了强大的,高级的线程构成器,包括executors(这是一个线程任务框架)、线程安全队列、Timers、锁(包括原子锁)和其他同步原语。

  著名的旗语(semaphore)是这样一个锁。semaphore和现在使用的wait的使用方式相同,用于限制对代码块的访问。Semaphore更加灵活,可以允许许多并发的线程访问,还允许在获得一个锁定之前测试它。下面的示例只使用了一个semaphore,也称二元semaphore。

final private Semaphore s= new Semaphore(1, true);
s.acquireUninterruptibly();
//for non-blocking version use
s.acquire()try
{
 balance=balance+10; //protecte
 d value} finally
 {
  s.release();
  //return semaphore token
 }
}


  rmic - - RMI编译程序

  你不必再使用rmic——rmi编译程序工具——来生成远程接口程序了。动态代理的引入意味着由程序正常提供的信息可以在运行期间显示。

上一页 [1] [2] 3 [4] [5] 下一页
  • 转载请注明来源:IT学习网 网址:http://www.t086.com/ 向您的朋友推荐此文章
  • 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。
  • 了解这些字:
  • 更多
    留言建议ASP探针PHP探针站长Enjoy的Blog
    © 2017 T086学习网 - T086.com(原itlearner.com)
    RunTime:14.50ms QueryTime:5