JDK1.5之 新特性

来源:互联网 发布:新手程序员必看书籍 编辑:程序博客网 时间:2024/04/29 08:21

JDK1.5新特性

"JDK1.5"的一个重要主题就是通过新增一些特性来简化开发,这些特性包括:泛型,for-each 循环, 自动装箱/拆箱,枚举,可变参数,静态导入,注解, 格式化输出。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。

JDK1.5新特性之泛型(Generic)
泛型只是编译时的概念。供编译器进行语法检查时用的。目的是努力将运行时异常转换为编译时错误,解决模板编程问题。示例如下:

import java.util.Date;/** * JDK1.5新特性验证 * 泛型 *  * @author  cKF61853 * @version  1.0, 2012-11-25 */public class Demo{    public static <T> T create(Class<T> cls)    {        try        {            return cls.newInstance();        }        catch (InstantiationException e)        {            e.printStackTrace();        }        catch (IllegalAccessException e)        {            e.printStackTrace();        }        return null;    }        public static void main(String[] args)    {        Date d = Demo.create(Date.class);        System.out.println(d);                StringBuffer str = Demo.create(StringBuffer.class);        System.out.println(str.getClass().getName());    }    }
//控制台输出
Fri Nov 30 16:33:49 CST 2012
java.lang.StringBuffer

JDK1.5新特性之增强for循环(Enhanced "for" loop)
遍历数组或者集合中的元素,减少编程量。示例如下:

public static void main(String[] args){        Collection<String> c = new ArrayList<String>();        c.add("aa");        c.add("bb");        for (String str : c)        {              System.out.println(str);        }}
//控制台输出
aa
bb

JDK1.5新特性之自动拆箱/装箱(Automatic boxing/unboxing)

Integer i = new Integer(2);//i自动拆箱为int类型System.out.println(i == 2);//3自动装箱为Integer类型System.out.println(i.equals(3));

JDK1.5新特性之可变参数(Variable parameters)

方法的参数是不固定的我们一般会使用重载或者使用数组参数。重载需要些更多写更多的方法,数组需要在使用时先声明。可变参数是一个不错的解决方案。示例如下:

public static void main(String[] args){        VariableDemo vd = new VariableDemo();        vd.speak("悟空", "人和妖精都是妈生的,");vd.speak("悟空", "人和妖精都是妈生的,", "妖是妖他妈生的,", "N...", 123456);}    public void speak(String name, Object... arguments){        System.out.print(name + ": ");        for (Object object : arguments)        {              System.out.print(object);        }        System.out.println();}
//控制台输出
悟空: 人和妖精都是妈生的,
悟空: 不同的人是人他妈生的,妖是妖他妈生的,N ...123456

JDK1.5新特性之注解(Annotation)

jdk1.5以后,系统提供单个 annotation
@Override 用来说明一个方法是覆写方法,并检查其是否符合覆写规则。
@Deprecated 用来说明某个类或者方法已经不建议使用,提供警告信息。
@SuppressWarnings(value)  用来压制某个警告信息。

JDK1.5新特性之枚举(Enumerate)

当每一类型可取值范围是有限的时候,可以使用枚举,例如每个学生登记只能用ABCD表示,如果直接用E的话,那么编译不会出错,但是却不符合输入要求,而使用枚举增加程序的易读性和健壮性。

JDK1.5新特性之格式化输出(Formatted print)

C语言中printf()风格的格式化输出。示例如下:

public static void main(String[] args){        int x = 5;           double y = 5.332542;           //The old way           System.out.println("Row 1: ["+x+" "+y+"]");           //The new way           System.out.format("Row 2: [%d %f]\n", x,y);           //or           System.out.printf("Row 3: [%d %f]\n", x, y);   }

JDK1.5新特性之静态导入(Static import)
静态导入允许您在调用其它类中定义的静态成员时,可以忽略类名。实例代码如下:
//静态成员定义package cn.j5newfeatures.staticimport;/** * JDK1.5新特性验证 * 静态导入 *  * @author  cKF61853 * @version  1.0, 2012-2-9 */public class StaticImportInstance{    public static final int A = 10;    public static final double B = 20.00;    public static final double C = 30.00;        public static double add (double one, double two)    {        return one + two;    }        public static double adder (double one, double two, int three)    {        return one + two + three;    }        public static void print(String str)    {        System.out.println("OMG:" + str);    }}//静态成员调用package cn.j5newfeatures.staticimport;//此处部分是关键import static cn.j5newfeatures.staticimport.StaticImportInstance.A;import static cn.j5newfeatures.staticimport.StaticImportInstance.B;import static cn.j5newfeatures.staticimport.StaticImportInstance.C;import static cn.j5newfeatures.staticimport.StaticImportInstance.add;import static cn.j5newfeatures.staticimport.StaticImportInstance.adder;import static cn.j5newfeatures.staticimport.StaticImportInstance.print;/** * JDK1.5新特性验证 * 静态导入测试 *  * @author  cKF61853 */public class TestStaticImport{    public static void main(String[] args)    {        print("A的值是" + A);        print("B的值是" + B);        print("C的值是" + C);                System.out.println(add(A, B));        System.out.println(adder(B, C, A));                print("静态导入测试...");    }    }
//控制台输出
OMG:C的值是30.0
30.0
60.0
OMG:静态导入测试...


原创粉丝点击