java5.0的新特性总结

我把java5.0产生的新特性总结一下,方便其他java爱好者的学习了解

java5.0中,主要的新特性主要包括1、泛型 2、增强的for循环3、自动装箱和自动拆箱4、类型安全的枚举 5、可变长度参数 6、静态引入 7、元数据(注解)8、C风格的格式化输出。

1、泛型,Java的泛型虽然跟C++的泛型看上去十分相似,但其实有着相当大的区别,有些细节的东西也相当复杂(至少很多地方会跟我们的直觉背道而驰)。可以这样说,泛型的引入在很大程度上增加了Java语言的复杂度,对初学者尤其是个挑战。

举例:ArrayList aList = new ArrayList();     aList.add(new Integer(1));  

首先在<>中定义integer类型,表示ArrayList集合中不会接受除integer外的类型,这样传给ArrayList的数据如果是其他类型,就会报错,从而让错误出现在调试阶段,方便程序员调试程序

2、增强for循环, 格式如:for (Object obj : c) 


        System.out.println((String) obj);     

}

具体的语法:使用":"分隔开,前面的部分写明从数组或Collection中将要取出的类型,以及使用的临时变量的名字,后面的部分写上数组或者Collection的引用,这样可以简化我们的书写。

3、自动装箱和拆箱,装箱,就是把值类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int型包装成Integer类的对象,或者把double包装成Double,等等。拆箱,就是跟装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为值类型的数据。java5.0之前的版本,我们需要手动将数据类型装箱和拆箱,java5.0后,java虚拟机在系统底层自动调用相应的方法,帮我们将数据装箱和拆箱。

举例:public static void manualBoxingUnboxing(int i) { 
    ArrayList aList = new ArrayList();     

aList.add(0, new Integer(i));    

  int a = aList.get(0).intValue(); 
    System.out.println("The value of i is " + a); 

}   
public static void autoBoxingUnboxing(int i) { 
    ArrayList aList = new ArrayList();    

 aList.add(0, i); 
         int a = aList.get(0); 
    System.out.println("The value of i is " + a); 

4、在张孝祥老师的视频中提到java本来是没有枚举的,但是使用Java的广大开发者对于枚举的需求并没有因为Java本身没有提供而消失,所以java在5.0版本中向C学习,引进枚举。

举例:public enum Language {CHINESE, ENGLISH, FRENCH, HUNGARIAN}

5、可变长度参数,在方法的参数列表中,我们可以定义可变长度的参数,用“...”表示,但是只能存在参数列表的最后一个参数。

举例:public String testVararg(String... args) {     

StringBuilder sb = new StringBuilder();    

 for (String str : args) {         sb.append(str);     } 
     return sb.toString(); 

}

6、静态引入,静态引入就是指引入某个类的静态字段,如import static java.lang.Math.PI;

这样,就不需要程序员手动的输入类名.方法名,只需要写方法名就可以了,但是如果多个类中定义相同的静态方法时,引用方法必须指明引用的是哪个类中的方法。

7、元数据(注解),注解不会直接影响程序的语义,而开发和部署工具则可以读取这些注解信息,并作相应处理,如生成额外的Java源代码、XML文档、或者其他将与包含注解的程序一起使用的物件。java5.0之前,我们靠反射来实现注解的功能,现在有了注解,可以大大减少代码。java5.0中主要的注解有@Override,这个注解被使用在方法上,表明这个方法是从其父类继承下来的,@Deprecated,表明该项(类、字段、方法)过时,不再被推荐使用。@SuppressWarnings,表明该项(类、字段、方法)所涵盖的范围不需要显示所有的警告信息。

8、C风格的格式化输出,Java有类似C的printf()风格的方法,方法名同样叫作printf(),这一特性依赖于前边提到的可变长度参数。举个例子来说,我们现在可以写: System.out.printf("%s has a value of %d.%n", someString, a);

 

你可能感兴趣的:(java5.0的新特性总结)