java7新特性總結
在2011年7月28日,Oracle正式釋出了Java 7。
總結的這些新特性,都是自己覺得在開發中實際用得上的。
1 switch中使用String
java7以前在switch中只能使用number或enum。
現在可以使用string了。
示例:
String s = "a"; switch (s) { case "a": System.out.println("is a"); break; case "b": System.out.println("is b"); break; default: System.out.println("is c"); break; }
2 try-with-resources
java7以前對某些資源的操作是需要手動關閉,如InputStream,Writes,Sockets,Sql等,需要在finally中進行關閉資源的操作,現在不需要使用finally來保證開啟的流被正確關閉,現在是自動完成的,會自動釋放資源,確保每一個資源在處理完成後都會關閉,就不需要我們程式碼去close();
在採用try-with-resources方式後,不需要再次宣告流的關閉。
可以使用try-with-resources的資源有:
任何實現了java.lang.AutoCloseable介面和java.io.Closeable介面的物件。為了支援這個行為,所有可關閉的類將被修改為可以實現一個Closable(可關閉的)介面。
public interface Closeable extends AutoCloseable
public abstract class Reader implements Readable, Closeable
如果在try語句中寫入了沒有實現該介面的類,會提示:
The resource type File does not implement java.lang.AutoCloseable
示例:
OutputStream fos = null; try { fos = new FileOutputStream("D:/file"); } finally { fos.close(); }
java7以後:
try(OutputStream fos = new FileOutputStream("D:/file");){
// 不需要再次指明fos.close();
}
3 捕獲多個異常
java7以前在一個方法丟擲多個異常時,只能一個個的catch,這樣程式碼會有多個catch,顯得很不友好,現在只需一個catch語句,多個異常型別用"|"隔開。
示例:
try {
result = field.get(obj);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
java7以後:
try {
result = field.get(obj);
} catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
4 泛型例項化型別自動推斷
運用泛型例項化型別自動推斷,對通用例項建立(diamond)的type引用進行了改進
示例:
List<String> list = new ArrayList<String>();
java7以後:
List<String> list = new ArrayList<>();
5 增加二進位制表示
Java7前支援十進位制(123)、八進位制(0123)、十六進位制(0X12AB)
Java7增加二進位制表示(0B11110001、0b11110001)
示例:
int binary = 0b0001_1001;
System.out.println("binary is :"+binary);
binary is :25
6 數字中可新增分隔符
Java7中支援在數字中間增加'_'作為分隔符,分隔長int以及long(也支援double,float),顯示更直觀,如(12_123_456)。
下劃線只能在數字中間,編譯時編譯器自動刪除數字中的下劃線。
示例:
int intOne = 1_000_000;
long longOne = 1_000_000;
double doubleOne = 1_000_000;
float floatOne = 1_000_000;