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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

里程碑式的革新—全新J2SE 1.5新特性簡介

2019-11-18 11:56:02
字體:
供稿:網(wǎng)友

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 洪湖市| 桦甸市| 深水埗区| 桦川县| 泌阳县| 阳东县| 镇赉县| 来安县| 赤峰市| 禹城市| 左贡县| 梅州市| 永善县| 兖州市| 桓台县| 绍兴县| 林甸县| 台州市| 临夏市| 大名县| 罗田县| 苏州市| 石首市| 吴江市| 江山市| 巨鹿县| 黄陵县| 西安市| 万载县| 东台市| 泗水县| 乐至县| 吴川市| 海口市| 罗山县| 竹山县| 顺平县| 玛纳斯县| 栾城县| 沁水县| 渑池县|