java高級特性和核心優化gc

http://www.importnew.com/13954.html    //gc 5

http://www.cnblogs.com/hnrainll/archive/2013/11/06/3410042.html

JDK5新特性(與1.4相比)

1 循環
for (type variable : array){ body}
for (type variable : arrayList){body}

而1.4必須是:
for (int i = 0; i < array.length; i++){ type variable = array[i];    body}
for (int i = 0; i < arrayList.size(); i++){type variable = (type) arrayList.get(i); body}
2 泛型
以ArrayList爲例,包括創建一個容器對象和取得容器內對象操作:
1.5 ArrayList<Type> arrayList =new ArrayList<Type>(); arrayList.get(i)
1.4 ArrayList arrayList =new ArrayList();  (Type) arrayList.get(i)

3 自動裝箱拆箱
在JDK5.0以前,在原始類型與相應的包裝類之間的轉化是不能自動完成的。要完成這種轉化,需要手動調用包裝類的構造函數,在JDK5.0環境中,可以自動轉化:
1.5 int a = 0; Integer wrapper = a;    int n = wrapper;
1.4 Integer wrapper = new Integer(n);    int n = wrapper.intValue();

4 可變的返回類型
在JDK5.0以前,當覆蓋父類方法時,返回類型是不能改變的。現在有新的規則用於覆蓋方法。如下,一個典型的例子就是clone()方法:
1.5 public Employee clone() { ... }
    ...
    Employee cloned = e.clone();
1.4 public Object clone() { ... }
    ...
    Employee cloned = (Employee) e.clone();

5 靜態導入
靜態導入功能對於JDK 5.0以前的版本是不支持的。
import static java.lang.Math;
import static java.lang.System;
...

1.5 out.println(sqrt(PI));
1.4 System.out.println(Math.sqrt(Math.PI));

6 控制檯輸入
JDK 5.0先前的版本沒有Scanner類,只能使用JOptionPane.showInputDialog類代替。
1.5 Scanner in = new Scanner(System.in);
    System.out.print(prompt);
    int n = in.nextInt();
    double x = in.nextDouble();
    String s = in.nextLine();

1.4 String input = JOptionPane.showInputDialog(prompt);
    int n = Integer.parseInt(input);
    double x = Double.parseDouble(input);
    s = input;

7 格式化輸出
JDK5.0以前的版本沒有printf方法,只能使用NumberFormat.getNumberInstance來代替。
1.5 System.out.printf("%8.2f", x);
1.4 NumberFormat formatter= NumberFormat.getNumberInstance();
    String formatted = formatter.format(x);
    for (int i = formatted.length(); i < 8; i++)
    System.out.print(" "); System.out.print(formatted);

8 內容面板代理
在JDK5.0先前的版本中,JFrame,JDialog,JApplet等類沒有代理add和setLayout方法。
1.5 add(component);  setLayout(manager);
1.4 getContentPane().add(component);getContentPane().setLayout(manager);
9 StringBuilder類
jDK 5.0引入了StringBuilder類,這個類的方法不具有同步,這使得該類比StringBuffer類更高效。

JDK6的新特性
1 SystemTray類
在JDK6中 ,AWT新增加了兩個類:Desktop和SystemTray,前者可以用來打開系統默認瀏覽器瀏覽指定的URL,打開系統默認郵件客戶端給指定的郵箱發郵件,用默認應用程序打開或編輯文件(比如,用記事本打開以txt爲後綴名的文件),用系統默認的打印機打印文檔;後者可以用來在系統托盤區創建一個托盤程序.

2 使用JAXB2來實現對象與XML之間的映射
JAXB是Java Architecture for XML Binding的縮寫,可以將一個Java對象轉變成爲XML格式,反之亦然。

3 新增StAX
StAX(The Streaming API for XML)是JDK6.0中除了DOM和SAX之外的又一種處理XML文檔的API

4 新增Compiler API
可以用JDK6 的Compiler API去動態編譯Java源文件。這個特性對於用到動態編譯的應用程序相當有用, 比如JSP Web Server,當我們手動修改JSP後,是不希望需要重啓Web Server纔可以看到效果的,這時候我們就可以用Compiler API來實現動態編譯JSP文件

5 輕量級Http Server
JDK6提供了一個簡單的Http Server API,,程序員必須自己實現HttpHandler接口,HttpServer會調用HttpHandler實現類的回調方法來處理客戶端請求。

6 插入式註解處理API(Pluggable Annotation Processing API)
插入式註解處理API提供一套標準API來處理Annotations,它把method, package, constructor, type, variable, enum, annotation等Java語言元素映射爲Types和Elements, 從而將Java語言的語義映射成爲對象。

7 用Console開發控制檯程序
JDK6中提供了java.io.Console類專用來訪問基於字符的控制檯設備.

8 Web服務元數據(Web Services metadata)
9 更簡單,更強大的JAX-WS
Java Architecture for XML Web Services的縮寫,是一種用Java和XML開發Web Services應用程序的框架。
10 腳本語言支持(Scripting)
JDK6增加了對腳本語言的支持,原理上是將腳本語言編譯成bytecode,這樣腳本語言也能享用Java平臺的諸多優勢,包括可移植性,安全等,另外,由於現在是編譯成bytecode後再執行,所以比原來邊解釋邊執行效率要高很多
發佈了187 篇原創文章 · 獲贊 5 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章