天天看点

黑马程序员_学习日记十四_基础加强之JDK1.5的新特性

---------------------- android培训、java培训、期待与您交流! ----------------------

静态导入-import static

    静态导入(import static)是java1.5中的新特性之一,为了书写的简便,可以通过静态导入的方式导入某一个类中的静态方法,格式如下:

        import staticjava.lang.Math.max;

        import staticjava.lang.Math.*;//将Math类下的所有静态方法导入了进来

    静态导入了某个类中的静态方法之后,可以直接使用该静态方法而不需要再用类名调用了,简化了代码的书写。

    注意:静态导入的格式一定是importstatic,而不能写成static import。而且当导入进来的方法名称有重复的情况,就必须指定要调用方法所属的对象或者类名。

可变参数

    可变参数是java1.5中的新特性之一。

    当一个方法需要传入的参数的个数不确定时,可以通过方法重载的形式来实现,也可以通过该新特性来实现。格式如下:

        public voidmethod(int i,int… arr){}

    可变参数的特点:

    1.只能出现在参数列表的最后,

    2.调用可变参数方法时,编译器会自动的为该可变参数隐式的创建一个数组,在方法体中以数组的形式访问可变参数。

增强for循环

    增强for循环也是java1.5中的新特性之一,它是for循环的另一种更加简洁的表现形式。

    格式如下:

        for(数据类型 变量名 : 集合变量名){ … }

    注意:

    1.迭代变量必须在()中定义,

    2.集合变量必须是数组或者实现了Iterable接口的集合。

    增强for循环有一定的局限性,就是只能对集合进行遍历,获取元素,无法获取元素所对应的角标值,并且不能对元素进行操作。所以当只是需要对集合进行便利的时候,增强for循环往往使用的比较多;而需要对集合中的元素进行相关的操作的时候,最好还是使用传统for循环。

自动拆装箱及享元设计模式

    基本数据类型的自动拆装箱是java1.5中的新特性之一

    自动装箱(AutoBoxing)和自动拆箱(AutoUnboxing):在定义一些基本数据类型的时候,编译器会自动完成它们和所属的基本数据包装类对象之间的转换,将基本数据类型转换成其相应的包装类对象的过程叫做自动装箱,将基本数据包装类对象转换成其相应的基本数据类型叫做自动拆箱。

    基本数据类型和对象的区别:

    1.基本数据类型的变量值存储在栈内存中,对象存储在对内存中。

    2.基本数据类型不是对象,它没有可以调用的方法,而java对基本数据包装类对象提供了一些可供调用的方法。

    享元设计模式(FlyWeight):当程序中出现了大量的相同的类对象,而这些类对象除了参数之外基本上相同时,为了避免对内存造成浪费,而使这些对象共享一个类对象就叫做享元设计模式。比如:

        integer i1 = 8;

        integer i2 = 8;

    对于基本数据类型的整型数据,当它们自动装箱成对应的对象时,如果数据的大小在一个字节之内,即-128-127,就会把这些对象存入到相应的“对象池”中,如果以后继续使用到相同的数据,就会从这个“对象池”中取出之前创建的对象来使用。

    享元设计模式的好处:实现数据共享,避免内存耗费,提高程序效率和性能,大大加快程序运行的速度。

枚举-Enum类

   枚举是java1.5中的新特性之一,用关键字enum来申明一个枚举,枚举可以看做是一个特殊的类,可以在枚举中定义自己的成员变量、成员方法,在定义一个枚举类型时,应该注意枚举有以下特点:

    1.构造方法不能是public的,保证不能被其他类调用而创建枚举类实例。

    2.类中所有的元素都是被publicstatic final所修饰的

    3.枚举类中除了定义枚举元素之外,还可以像其他类一样定义成员变量和成员方法,但是这些定义语句一定要在所有枚举值定义之后,而且最后一个枚举值必须以“;”结束。否则编译器就会报错。

    4.枚举类型不能使用extends关键字,但是可以使用implements关键字。这样我们可以把不同枚举类型共有的行为提取到接口中,来规范枚举类型的行为。

    Enum类中除了继承object之外的方法外,还提供一些其他方法共调用,如下:

    1.int compareTo(Enumo),比较此枚举与指定对象的顺序。在该对象小于、等于或大于指定对象时,分别返回负整数、零或正整数。

    2.String name(),返回此枚举常量的名称。

    3.int ordinal(),返回枚举常量在枚举声明中的位置,其中初始常量序数为零。

    4.valueOf(Class<T> enumType,Stringname),返回带指定名称的指定枚举类型的枚举常量。名称必须与在此类型中声明枚举常量所用的标识符完全匹配,不匹配,则报错。

    5.enum[]values(),获得包含所有枚举常量的数组。

---------------------- android培训、java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima