91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

J2SE1.5的新特點(之一) (轉)

發布時間:2020-08-10 17:23:52 來源:ITPUB博客 閱讀:177 作者:amyz 欄目:編程語言
J2SE1.5的新特點(之一) (轉)[@more@]

j2se1.5的新特點XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

ASPectratio="t" v:ext="edit">2003-5-10021190.gif" o:> J2SE 的下一個版本名字叫“Tiger”在讓程序員的代碼更清楚、更短、更安全,更加容易開發的情況下不損失其兼容性。 請你簡單談談J2SE 1.5 的優點。

  新的java語言特點都基于一個目的:盡量使它們都使用一些相同的語法習慣并提供語義支持。也就是說:以前程序員需要書寫的很多語義編程格式的工作在新的程序中由編譯器來做。

  什么改變對程序員來說是最困難的呢?那些改變是程序員不的不面對的呢?

   一般來說,沒有什么讓人感到困難的改變,泛型編程的改變可能大些。使用泛型編程需要在聲明的時候提供附加的聲明信息。比如:
  List words = new ArrayList();
需要替換成:
  List words = new ArrayList();

這樣做的一個優點是,如果你插入數組的數據類型不是字符串的話,你就可以在編譯的時候發現和解決這個bug。如果不使用上面的聲明,這個bug不可能在編譯的時候發現,程序運行后會出現ClassCastException 的錯誤。
  另一個好處是:你不在需要擔心集合中的元素超出了范圍:

  String title = ((String) words.get(i)).toUppercase();

使用:

  String title = words.get(i).toUppercase();

  你能簡單的介紹一下這些J2SE 1.5中改變最大的六個方面嗎?

 好的,

  • 泛型編程 – 提供集合對象的編譯時安全類型檢查。
  • 增強 for 循環  - 編程更容易,去掉了修正了導致迭代出錯的問題。
  • 裝箱/拆箱 -  原始類型(int)和封裝類型(Integer)的轉換更容易。
  • 類型安全的枚舉 – 提供了最常使用的類型安全的枚舉模式。(Effective Java, Item 21)
  • 靜態導入Static import - Lets you avoid qualifying static members with class names, without the shortcomings of the Constant Interface antipattern (Effective Java, Item 17).
  • Metadata – 避免編寫描述信息的代碼,實現“聲明”編程的模式。程序員聲明需要做什么,然后由相關的工具來完成具體的工作。

過濾一個集合中的元素,現在的做法和j2se1.5中的做法有什么不同呢?

現在的做法是:

/**

 * 從一個指定的集合中去掉一個4個字符的元素。

 */

static void expurgate(Collection c) {

  for (Iterator i = c.iterator(); i.hasNext(); ) {

   String s = (String) i.next();

  if(s.length() == 4)

  i.remove();

  }

}

上面的代碼,有些缺陷,在運行的過程中可能出錯。比如:在集合中如果包含一個StringBuffer類型的數據。

以后可以這樣做:

static void expurgate(Collection c) {

  for (Iterator i = c.iterator(); i.hasNext(); )

  if (i.next().length() == 4)

  i.remove();

}

  再說說增強的for循環吧!

  一個集合中元素的迭代,原來的做法繞的慌。J2SE1.5中大多數情況下你不需要使用Iterate 來遍歷一個集合。增強的for循環,讓編譯器來完成具體的迭代工作。比如:
void cancelAll(Collection c) {
  for (Iterator i = c.iterator(); i.hasNext(); ) {
  TimerTask tt = (TimerTask) i.next();
  tt.cancel();
  }
}
現在可以這樣做:

void cancelAll(Collection c) {

  for (object o : c)

  ((TimerTask)o).close();

}

注意:上面的冒號,它表示:in。在C#中或者很自然的一個替代是:foreach 和in 。但是考慮到兼容性,我們沒有那樣做。

泛型編程和增強的for結合后會是什么結果呢?

  上面的例子中的代碼,可以用下面的代碼表示:

void cancelAll(Collection c) {

  for (TimerTask task : c)

  task.cancel();

}

什么是裝箱?

  大家知道,java語言中有兩種數據類型:一些是基本數據類型,另一些是對象引用類型。基本的數據類型無法直接放入到集合中,除非做相應的類型轉換。這種轉換非常枯燥。

據個例子:
map數據類型的key用來存儲單詞,value用來存儲單詞重復的次數。這是一個計算單詞出現頻率的小程序。

public class Freq {

  private static final Integer ONE = new Integer(1);

  public static void main(String args[]) {

  Map m = new TreeMap();

  for (int i=0; i

  Integer freq = (Integer) m.get(args[i]);

  m.put(args[i], (freq==null ? ONE :

  new Integer(freq.intValue() + 1)));

  }

  System.out.println(m);

  }

}

下面是采用裝箱,泛型,和增強的for循環后的代碼:

public class Freq {

  public static void main(String args[]) {

  Map m = new TreeMap();

  for (String word : args)

  m.put(word, m.get(word) + 1);

  System.out.println(m);

  }

}

需要注意:上面的程序假定拆箱為null的時候,值為0。

之二:

.NET/develop/read_article.asp?id=18442">http://www.csdn.net/develop/read_article.asp?id=18442


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定日县| 米脂县| 青冈县| 武义县| 商洛市| 电白县| 中方县| 桑日县| 江山市| 长春市| 庆阳市| 常宁市| 霍林郭勒市| 紫阳县| 西丰县| 延长县| 徐汇区| 沙洋县| 大丰市| 蒲城县| 乌兰察布市| 永川市| 漳平市| 分宜县| 闽清县| 鄱阳县| 友谊县| 沛县| 偏关县| 邵阳市| 滕州市| 虞城县| 沈丘县| 永吉县| 基隆市| 四川省| 贵溪市| 花莲市| 海南省| 灵丘县| 吴川市|