国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

里程碑式的革新—全新J2SE1.5新特性簡介

2019-11-18 11:38:12
字體:
來源:轉載
供稿:網友

  java2標準版(Java 2 Platform, Standard Edition, J2SE)1.5即將正式推出,這一次的版本更新不同于以往,它帶來了很多里程碑式的革新,SUN將其綽號取名為“虎”。這一次的變革將是Java誕生以來從未有過的,它給我們帶來了耳目一新的感覺。下面我們就來欣賞一下其中的部分典型變化:
  
  1.自動包裝和解包(Autoboxing and unboxing)
  代碼示例
  
  往一個ArrayList中加入一個整數,1.5版本以前的版本寫法是:
  
  List list = new ArrayList();
  
  list.add( new Integer( 10 ) );
  
  而在1.5版本中可以寫為:
  
  list.add( 10 );
  
  因為,在1.5版本中,對一個整數進行包裝,使之成為一個Integer對象(即包裝,boxing),然后加入到一個ArrayList中的做法被認為是沒有必要的,反之,解包(unboxing)的做法也是沒有必要的,這樣的代碼只是增加了程序的文本長度而已,所以1.5版本支持了自動包裝和解包操作,對于bool/Boolean,byte/Byte,double/Double,short/Short,int/Integer,long/Long,float/Float的相應包裝/解包操作都進行了支持,從而使代碼變得簡單。
  
  2.更優化的循環語句(The inhanced for loop)
  代碼示例
  
  一個典型的遍歷數組的循環語句,1.5版本以前的寫法是:
  
  for ( Iterator iterator = list.iterator(); iterator.hasNext(); )
  
  {
  
  Integer n = (Integer)iterator.next();
  
  ...
  
  }//for
  
  而在1.5版本中可以寫為:
  
  for ( Integer n : list )
  
  {
  
  ...
  
  }//for
  
  顯然1.5版本的寫法比以前是大大簡化了,但是在需要修改集合,比如刪除其中元素時不能采用這種寫法。之所以Java1.5版本沒有象C#那樣干脆定義一個foreach要害詞,主要是因為SUN認為增加一個專門的要害詞成本太高了(too costly)。但1.4版本中就曾經增加了assert要害詞,1.5版本中也新增加了enum要害詞,因此這一解釋恐怕并不那么令人信服。
  
  3.參數可變的方法和PRintf
  代碼示例
  
  當不能確定一個方法的入口參數的個數時,以往版本的Java中,通常的做法是將多個參數放在一個數組或者對象集合中作為參數來傳遞,1.5版本以前的寫法是:
  
  int sum(Integer[] numbers)
  
  {
  
  int nSum = 0;
  
  for(int i: numbers)
  
  nSum += i;
  
  return nSum;
  
  }
  
  ...
  
  //在別處調用該方法
  
  sum(new Integer[] {12,13,20});
  
  而在1.5版本中可以寫為:
  
  int sum(Integer... numbers)
  
  {
  
  int nSum = 0;
  
  for(int i: numbers)
  
  nSum += i;
  
  return nSum;
  
  }
  
  ...
  
  //在別處調用該方法
  
  sum(12,13,20);
  
  顯然,1.5版本的寫法更為簡易,也更為直觀,尤其是方法的調用語句,不僅簡化很多,而且更符合通常的思維方式,更易于理解。
  
  1.5版本自身就有一個應用該特征的典型例子,即C風格的格式化輸出方法――printf。
  
  代碼示例
  
  輸出一個加法算式,1.5版本以前的寫法是:
  
  int x = 5;
  
  int y = 7;
  
  int nSum = x + y;
  
  System.out.println(x + " + " + y + " = " + nSum);
  
  而在1.5版本中可以寫為:
  
  System.out.printf("%d + %d = %d/n", x, y, nSum);
  
  以上兩種寫法的輸出結構是一樣的,即“5 + 7 = 12”。
  
  這種改變不僅僅是形式上的,printf還可以提供更為靈活、強大的輸出功能,比如限定按照兩位整數的形式輸出,可以寫為“System.out.printf("%02d + %02d = %02d/n", x, y, nSum);”,輸出結果將是“05 + 07 = 12”。
  
  4.枚舉
  代碼示例
  
  構建一個表示色彩的枚舉,并賦值,在1.5版本中可以寫為:
  
  public enum MyColor{ Red, Yellow, Blue }
  
  MyColor color = MyColor.Red;
  
  for ( MyColor mycolor : MyColor.values() )
  
  System.out.println( mycolor );
  
  以往的Java版本中沒有enum要害詞,1.5版本中終于加入了進來,這確實是一個令人興奮的改進。此外,enum還提供了一個名為values()的靜態方法,用以返回枚舉的所有值的集合。所以,以上程序的輸出結果是把“Red”、“Yellow”、“Blue”分行輸出。
  
  而enum提供的靜態方法valueOf()則將以字符串的形式返回某一個具體枚舉元素的值,比如“MyColor.valueOf(“Red”)”會返回“Color.Red”。靜態方法name()則返回某一個具體枚舉元素的名字,比如“MyColor.Red.name()”會返回“Red”。類似的方法還有不少。此外,enum自身還可以有構造方法。
  
  5.靜態引用
  代碼示例
  
  當我們要獲取一個隨即數時,1.5版本以前的寫法是:
  
  import java.lang.Math; //程序開頭處
  
  ...
  
  double x = Math.random();
  
  而在1.5版本中可以寫為:
  
  import static java.lang.Math.random; //程序開頭處
  
  …
  
  double x = random();
  
  靜態引用使我們可以象調用本地方法一樣調用一個引入的方法,當我們需要引入同一個類的多個方法時,只需寫為“import static java.lang.Math.*”即可。這樣的引用方式對于枚舉也同樣有效。
  
  6.總結
  以上對J2SE1.5的部分新特征做了一些簡單的介紹??偠灾?,1.5版本的Java確實給我們帶來了很多令人激動的變革,如同以上介紹的那樣,很多功能以前的版本也能實現,但是不能實現得這樣簡單、漂亮。相信這次變革會給Java帶來更多的追隨者。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 全南县| 蒲江县| 陈巴尔虎旗| 南通市| 弥勒县| 和田县| 海林市| 新田县| 广丰县| 西畴县| 德阳市| 高州市| 屏东县| 汉中市| 永清县| 武安市| 乐陵市| 屏山县| 大连市| 乌审旗| 方山县| 瑞丽市| 安阳县| 龙游县| 东丽区| 江城| 夏津县| 南皮县| 定边县| 黄骅市| 河西区| 岳池县| 宁明县| 湖州市| 霞浦县| 宣城市| 收藏| 招远市| 昌宁县| 齐齐哈尔市| 兴隆县|