1. 程式人生 > >JDK各版本新增的主要特性

JDK各版本新增的主要特性

rmi rop j2se 嵌入式數據庫 應用 rdquo 數字 char htable

JDK1.5新特性:

1.自動裝箱與拆箱:

2.枚舉

3.靜態導入,如:import staticjava.lang.System.out

4.可變參數(Varargs)

5.內省(Introspector),主要用於操作JavaBean中的屬性,通過getXxx/setXxx。一般的做法是通過類Introspector來獲取某個對象的BeanInfo信息,然後通過BeanInfo來獲取屬性的描述器(PropertyDescriptor),通過這個屬性描述器就可以獲取某個屬性對應的getter/setter方法,然後我們就可以通過反射機制來調用這些方法。

6.泛型(Generic)(包括通配類型/邊界類型等)

7.For-Each循環

8.註解

9.協變返回類型:實際返回類型可以是要求的返回類型的一個子類型

JDK1.6新特性:

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

2.使用JAXB2來實現對象與XML之間的映射,可以將一個Java對象轉變成為XML格式,反之亦然

3. StAX,一種利用拉模式解析(pull-parsing)XML文檔的API。類似於SAX,也基於事件驅動模型。之所以將StAX加入到JAXP家族,是因為JDK6中的JAXB2和JAX-WS 2.0中都會用StAX。

4.使用Compiler API,動態編譯Java源文件,如JSP編譯引擎就是動態的,所以修改後無需重啟服務器。

5.輕量級Http Server API,據此可以構建自己的嵌入式HttpServer,它支持Http和Https協議。

6.插入式註解處理API(PluggableAnnotation Processing API)

7.提供了Console類用以開發控制臺程序,位於java.io包中。據此可方便與Windows下的cmd或Linux下的Terminal等交互。

8.對腳本語言的支持如: ruby,groovy, javascript

9.Common Annotations,原是J2EE 5.0規範的一部分,現在把它的一部分放到了J2SE 6.0中

10.嵌入式數據庫 Derby

JDK1.7 新特性

1.對Java集合(Collections)的增強支持,可直接采用[]、{}的形式存入對象,采用[]的形式按照索引、鍵值來獲取集合中的對象。如:

List<String>list=[“item1”,”item2”];//存

Stringitem=list[0];//直接取

Set<String>set={“item1”,”item2”,”item3”};//存

Map<String,Integer> map={“key1”:1,”key2”:2};//存

Intvalue=map[“key1”];//取

2.在Switch中可用String

3.數值可加下劃線用作分隔符(編譯時自動被忽略)

4.支持二進制數字,如:int binary= 0b1001_1001;

5.簡化了可變參數方法的調用

6.調用泛型類的構造方法時,可以省去泛型參數,編譯器會自動判斷。

7.Boolean類型反轉,空指針安全,參與位運算

8.char類型的equals方法: booleanCharacter.equalsIgnoreCase(char ch1, char ch2)

9.安全的加減乘除: Math.safeToInt(longv); Math.safeNegate(int v); Math.safeSubtract(long v1, int v2);Math.safeMultiply(int v1, int v2)……

10 .Map集合支持並發請求,註HashTable是線程安全的,Map是非線程安全的。但此處更新使得其也支持並發。另外,Map對象可這樣定義:Map map = {name:"xxx",age:18};

JDK1.8新特性

1.接口的默認方法:即接口中可以聲明一個非抽象的方法做為默認的實現,但只能聲明一個,且在方法的返回類型前要加上“default”關鍵字。

2. Lambda 表達式:是對匿名比較器的簡化,如:

Collections.sort(names,(String a, String b) -> {

returnb.compareTo(a);

});

對於函數體只有一行代碼的,你可以去掉大括號{}以及return關鍵字。如:

Collections.sort(names,(String a, String b) -> b.compareTo(a));

或:Collections.sort(names, (a, b) -> b.compareTo(a));

3. 函數式接口:是指僅僅只包含一個抽象方法的接口,要加@FunctionalInterface註解

4. 使用 :: 關鍵字來傳遞方法或者構造函數引用

5.多重註解

6.還增加了很多與函數式接口類似的接口以及與Map相關的API等……

JDK各版本新增的主要特性