1. 程式人生 > >java7新特性總結

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;