首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java SE 增强(一)

2012-09-20 
Java SE 加强(一)静态导入lJDK 1.5 增加的静态导入语法用于导入指定类的某个静态属性(方法)或全部静态属性

Java SE 加强(一)

静态导入

l       JDK 1.5 增加的静态导入语法用于导入指定类的某个静态属性值(方法)或全部静态属性值(方法)

l      语法:

?        Import static 包名.类名.静态属性|静态方法|*

l      静态导入语句使用 import static 语句

?        导入指定类的单个静态属性:                             

     import static java.lang.System.out

?        导入指定类静态方法
 import static java.lang.Math.max

?        导入指定类全部静态属性和方法                                  

     import static java.lang.Math.*

自动装箱/拆箱

l       自动装箱(autoboxing):把一个基本数据类型直接赋给对应的包装类变量, 或者赋给 Object 变量

l       自动拆箱:把包装类对象直接赋给一个对应的基本类型变量

事例:

Integer i=1; //自动装箱

       //相当于Integer i=new Integer(1);

      

       int j=i;  //自动拆箱

应用

List list = new ArrayList();

    list.add(1);

int j = (Integer)list.get(0);//自动装箱

增强for循环

l       引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦!

l       因此JDK5中定义了一种新的语法——增强for循环,以简化此类操作。增强for循环只能用在数组、或实现Iterator接口的集合类上

l      使用 foreach 循环遍历数组和集合元素时, 无须获得数组和集合长度, 无须根据索引来访问数组元素和集合元素, foreach 循环自动遍历数组和集合的每个元素

l       语法格式:

?        for ( type 变量名:集合变量名 )  { … }

           for(type varName : array| collection){

                  //varName 自动迭代访问每一个元素

            }

事例:

@Test

    public void test1(){

       String[] name={"aa","bb","cc"};

       for(String str:name){

           System.out.println(str);

       }

    }

    @Test

    public void test2(){

       List list=newArrayList();

       list.add("aaa");

       list.add("bbb");

       list.add("ccc");

       for(Object str:list){

           System.out.println(str);

       }

    }

可变参数

l      从 JDK 1.5 开始, Java 允许定义形参长度可变的参数,从而允许为方法指定数量不确定的形参

l      若在定义方法时, 在最后一个形参的类型后增加三点(…, ...位于变量类型和变量名之间,前后有无空格都可以)则表明该形参可以接受多个参数值, 多个参数值被当成数组传入

l      可变形参只能处于形参列表的最后, 所以一个方法最多只能有一个长度可变的形参

l      调用包含一个可变形参的方法时, 可以为该形参传入多个参数或一个数组

l      调用可变参数的方法时, 编译器为该可变参数隐含创建一个数组, 在方法体中以数组的形式访问可变参数

事例:

Java SE 增强(一)

枚举类

l      为什么需要枚举?

?        一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。

l      JDK5新增的 enum 关键字用于定义一个枚举类。

事例:

package com.hbsi.enum1;

 

public class Student {

   

    private Stringname;

    private Stringgrade;

   

    public String getName() {

       returnname;

    }

    public void setName(String name) {

       this.name = name;

    }

    public String getGrade() {

       returngrade;

    }

    public void setGrade(String grade) {

      

       if(!grade.matches("[ABCDE]")){

          

           throw new IllegalArgumentException("输入的成绩不符合要求!!");

 

       }

       this.grade = grade;

    }

   

   

 

}

 

 

 

 

 

package com.hbsi.enum1;

 

public class Demo1 {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

      

       Student s=new Student();

       s.setName("张三");

       s.setGrade("F");

 

    }

 

}

l       枚举类对象的属性不应允许被改动, 所以应该使用 privatefinal 修饰

l      枚举类的使用 private final 修饰的属性应该在构造器中为其赋值

l      若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数

 

l      Java中声明的枚举类,均是java.lang.Enum类的孩子,它继承了Enum类的所有方法。常用方法:

?        name():返回此枚举常量的名称,在其枚举声明中对其进行声明

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

?        valueof(ClassenumClass, String name):返回带指定名称的指定枚举类型的枚举常量。 静态方法

?        values()此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便。

 

热点排行