Java 不同版本更新總結

面試時候雖沒有被問到,但是感覺在相關問題上丟了面試分,在此總結一下。

參考 Reference

http://pwosboy.iteye.com/blog/118756

http://hanhg.iteye.com/blog/291956

http://pengcqu.iteye.com/blog/499749

Java 1.5

1. Generic

在之前版本,如果聲明的時候沒有特別指出class,比如ArrayList list = new ArrayList(),那麼取出數據的時候需要對其進行類型轉換。

list.add(new Integer(3));
Integer temp = (Integer)list.get(0);


現在

ArrayList<Integer> list = new ArrayList<Integer>();

注意一下下列這種情況

	public <T extends Comparable> T max(T t1, T t2) {
		if (t1.compareTo(t2) > 0)
			return t1;
		else
			return t2;
	}

	void printCollection(Collection<?> c) {// Collection<?>, collection of unknown
		for (Object e : c) {
			System.out.println(e);
		}
	}// 可以傳入各種類型的Collection,如果是Collection<Object>則不能這麼用,因爲“若Foo是Bar的一個子類型(子類或子接口), G是某個泛型聲明, 則G<Foo>並不是G<Bar>的一個子類型

2. For each

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(new Integer(3));
list.add(new Integer(4));
for(Integer temp : list){
    System.out.println(temp.intValue());
}
3. Autoboxing/unboxing

自動裝包:基本類型自動轉爲包裝類.(int >> Integer)
自動拆包:包裝類自動轉爲基本類型.(Integer >> int)

int a = 3;
Collection<Integer> c = new ArrayList<Integer>();
c.add(a);//自動轉換成Integer.
Integer b = new Integer(2);
c.add(b + 2);//這裏Integer先自動轉換爲int進行加法運算,然後int再次轉換爲Integer.
4. enum

	public enum Color{
		Red,
		White,
		Blue
	}
	for (Color c : Color.values())
		System.out.println(c); 
5. Varargs

	public void write(Object... objs) {
		for (Object obj: objs)
		System.out.println(obj);
	}
6. Static Imports

	import static java.lang.Math.*;
	…….
	r = sin(PI * 2); //無需再寫r = Math.sin(Math.PI); 


Java 1.6
1. Class Desktop && Class SystemTray

2. JAXB2

3. StAX (DOM, SAX)

4. Compiler API

5. Http Server API

6. Pluggable Annotation Processing API

7. java.io.Console

8. Support script language: Ruby, Groovy, Javascript

9. Common Annotations


1.7

1.集合的支持

		List< String> list = ["item"];
		String item = list[0];
		Set< String > set = {"item"};
		Map< String,Integer > map = {"key" : 1};
		int value = map["key"];
2. 資源自動回收管理

之前:

		BufferedReader br = new BufferedReader(new FileReader(path));
		try {
		   return br.readLine();
		} finally {
		   br.close();
		}

Java 1.7:

		try (BufferedReader br = new BufferedReader(new FileReader(path))) {
			   return br.readLine();
			}
3. Generic simplified

Map<String,String> hello = new Map<>();

4. 數字中的下劃線

待研究

5. switch case支持String. Remember to check if null before parse String

6. Binary symbol

int binary = 0b1001_1001;

7. Catch mutiple exception types

		try {
			do something;
		}
		catch(IOException | NullPointerException | ..........) {
			do something;
		}





發佈了127 篇原創文章 · 獲贊 0 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章