DANCE WITH JAVA

          開發出高質量的系統

          常用鏈接

          統計

          積分與排名

          好友之家

          最新評論

          JDK1.5 泛型之外的其它新特性

          JDK1.5泛型之外的其它新特性,泛型相關看這里
            
          For-Each循環
          For-Each循環得加入簡化了集合的遍歷。假設我們要遍歷一個集合對其中的元素進行一些處理。典型的代碼為:

          1 class  Bean {
          2   public   void  run() {
          3   // .
          4  }

          5 }

          6

           

           1 ArrayList list  =   new  ArrayList();
           2 list.add( new  Bean());
           3 list.add( new  Bean());
           4 list.add( new  Bean());
           5
           6 for (Iterator ie = list.iterator(); list.hasNext();) {
           7  Bean bean  =  (Bean)ie.next();
           8  bean.run();
           9  
          10 }

          11
          12

          使用For-Each循環,配合泛型,我們可以把代碼改寫成,

           1 ArrayList < Bean >  list  =   new  ArrayList < Bean > ();
           2 list.add( new  Bean());
           3 list.add( new  Bean());
           4 list.add( new  Bean());
           5
           6 for (Bean bean : list ) {
           7  bean.run();
           8 }

           9
          10

          這段代碼要比上面清晰些,少寫些,并且避免了強制類型轉換。
            
            
          2.枚舉(Enums)
          JDK1.5加入了一個全新類型的“類”-枚舉類型。為此JDK1.5引入了一個新關鍵字enmu.
          我們可以這樣來定義一個枚舉類型。
          public enum Color{
              Red,
              White,
              Blue
          }
          然后可以這樣來使用Color myColor = Color.Red.
          枚舉類型還提供了兩個有用的靜態方法values()和valueOf(). 我們可以很方便地使用它們,例如
          for(Color c : Color.values())
             System.out.println(c);  

          6.靜態導入(Static Imports)
          要使用用靜態成員(方法和變量)我們必須給出提供這個方法的類。使用靜態導入可以使被導入類的所有靜
          態變量和靜態方法在當前類直接可見,使用這些靜態成員無需再給出他們的類名。
          import static java.lang.Math.*;
          r = round(); //無需再寫r = Math.round();
          不過,過度使用這個特性也會一定程度上降低代碼地可讀性

          5.可變參數(Varargs)
          可變參數使程序員可以聲明一個接受可變數目參數的方法。注意,可變參數必須是函數聲明中的最后一個參數。
          假設我們要寫一個簡單的方法打印一些對象

          例如:我們要實現一個函數,把所有參數中最大的打印出來,如果沒有參數就打印一句話。
          需求:
          prtMax();
          prtMax(1);
          prtMax(1,2);
          prtMax(1,2,3);
          ......
          prtMax(1,2,3...n);
          以前的實現方式:

           1 prtMax() {
           2  System.out.println( " no parameter " );
           3 }

           4 prtMax( int  a) {
           5  System.out.println(a);
           6 }

           7 prtMax( int  a, int  b) {
           8   if (a > b) {
           9   System.out.println(a);
          10  }
          else {
          11   System.out.println(b);
          12  }

          13 }

          14
          15

          我們發先寫多少個都不夠,子子孫孫無窮盡也
          改造一下,在上邊的基礎上,再加上
          prtMax(int a,int b,int[] c){
           //....比較最大的輸出
           這樣能實現了,但是要求使用的人必須要在輸入前把數字做成int[]
          }
          看看現在使用新特性怎么實現:

           1 prtMax( int   nums) {
           2   if (nums.length == 0 ) {
           3   System.out.println( " no parameter " );
           4  }
          else {
           5    int  maxNum  =   0 ;
           6    for ( int  num :nums) {
           7     if (num  > maxNum) {
           8     maxNum  =  num;
           9    }

          10   }

          11   System.out.println(maxNum);
          12  }

          13 }

          14

          好了,無論多少個參數都可以了
          prtMax();
          prtMax(1);
          prtMax(1,2);
          prtMax(1,2,3,4,5,6,7,8, ....,n);

          另外JDK1.5中可以像c中這樣用了
          String str="dd";
          int k =2;
          System.out.printf("str=%s k=%d",str,k);

          posted on 2006-11-09 16:21 dreamstone 閱讀(1496) 評論(0)  編輯  收藏 所屬分類: jdk相關

          主站蜘蛛池模板: 南宫市| 固安县| 建阳市| 前郭尔| 大英县| 耿马| 乐清市| 南昌市| 株洲县| 平原县| 嵊泗县| 政和县| 正蓝旗| 清镇市| 磐安县| 镇康县| 卫辉市| 陈巴尔虎旗| 荥阳市| 饶河县| 钦州市| 沧源| 卫辉市| 永昌县| 阜阳市| 基隆市| 赣榆县| 镇坪县| 云和县| 青阳县| 许昌市| 绿春县| 嘉黎县| 弥渡县| 锦屏县| 徐闻县| 梧州市| 高要市| 嘉祥县| 曲周县| 民乐县|