论坛首页 入门技术论坛

java 5/6 新特性之我见

浏览 1301 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-06  

一、增强的for循环

这只是一个很小的语言改进,来源于vb等语言中的foreach语句,因此有人也称其为foreach增强。它可以作用于集合类,数组等。

如:int[] a={1,335,59,9,4,8};

for(int i:a)

system.out.println(i);

Set<Integer> set=new Set<Integer>();

for(int i=0;i<10;i++)

set.add(i);

for(Integer I:set)

system.out.print(i);

二、自动装箱和拆箱

运行时系统可以直接在基本类型和对应的包装类之间转换。

Set<Integer> set=new Set<Integer>();

for(int i=0;i<10;i++)

set.add(i);

for(Integer I:set)

system.out.print(i);

就使用了int和Integer之间的自动转换。

 

三、可变参数列表

说的了就是可以使用不确定个数的参数,主要用于函数

fun(double... a){

for(double d:a)

system.out.print(d);}

它的标志性语法就是类型后连着三点。

在此以前java中也可以用数组参数来达到相关的效果。但是可变参数更有表达力。

 

四、 协变返回

就是可以在覆盖函数的时候用原来函数的返回类型的子类来替代

如:

Object pop(){}

@Override

Integer pop(){}

上面两个函数在java5中是可以运行的。

 

五、枚举

java中的枚举是类型安全的,但是它是一个类Enum的子类,因此它不能再继承其它类,且java的enum比c的enum功能更强大,而且在是很复杂。与枚举有关的有一个静态导入(static import) ,它是在当前的文件中你可以直接使用它的实例名,而不用加上enum类型名。enum指的是实例集合。

六、泛型

泛型也是参数类型,和c++中的模板(template)有相似的地方,但是java中的泛型功能要弱得多,而且很难自己写泛型。希望在java7中改进。

Collection<String> c = new ArrayList<String>();

但是ArrayList<Object> arr=new ArrayList<String>();却会出错。

而且支持?通配符和super, extends来指定边界。

七、注解(annotation)

注解可以说是java5中加入的最有前途的特性,是元数据,也就是可以用来表示其它数据的数据,但是它不是普通人可以驾驭的。

就像我在前例中使用的@Override,就是一个注解。

 

 

java6主要是在性能上做了改进,同时在swing上做了一些增加,如Desktop,SystemTray,SystemTrayIcon和启动动画。当然sun对java编译器,解释器做了很多增强。

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics