Java五、Java六、Java7的新特性

Java5

Java 5添加了8個語言特性:泛型,類型安全枚舉,註解,自動裝箱和拆箱,加強的循環,靜態導入,可變參數,協變返回類型html

一、泛型 Generics:

  引用泛型以後,容許指定集合裏元素的類型,去了強制類型轉換,並且能在編譯時刻進行類型檢查的好處。Parameterized Type做爲參數和返回值,Generic是vararg、annotation、enumeration、collection的基石。java

A、類型安全git

  拋棄ListMap,使用List<T>Map<K,V>給它們添加元素或者使用Iterator<T>遍歷時,編譯期就能夠給你檢查出類型錯誤api

B、方法參數和返回值加上了Type數組

  拋棄ListMap,使用List<T>Map<K,V>安全

C、不須要類型轉換併發

List<String> list=new ArrayList<String>();

String str=list.get(i);

D、類型通配符「?框架

  假設一個打印List<T>中元素的方法printList,咱們但願任何類型TList<T>均可以被打印:ide

public void printList(List<?> list,PrintStream out)throws IOException {
    for(Iterator<?> i=list.iterator();i.hasNext();){
        System.out.println(i.next.toString());
    }
}

  若是通配符?讓咱們的參數類型過於普遍,咱們能夠把List<?>Iterator<?> 修改成函數

  List<? Extends Number>、Iterator<? Extends Number>限制一下它。

二、枚舉類型 Enumeration:

三、自動裝箱拆箱(自動類型包裝和解包)autoboxing & unboxing:

四、可變參數varargs(varargs number of arguments)

  參數類型相同時,把重載函數合併到一塊兒了。

public void test(object... objs){
    for(Object obj:objs){
        System.out.println(obj);
    }
}

五、Annotations 

  它是java中的metadata

A、Tiger中預約義的三種標準annotation

  a 、Override

    指出某個method覆蓋了superclass method當你要覆蓋的方法名拼寫錯時編譯不經過 

  b、Deprecated

    指出某個methodelement類型的使用是被阻止的,子類將不能覆蓋該方法

  c、SupressWarnings

    關閉classmethodfieldvariable 初始化的編譯期警告,好比:List沒有使用 Generic,@SuppressWarnings("unchecked")去掉編譯期警告。

B、自定義annotation

  public @interface Marked{}

C、meta-annotation

  或者說annotationannotation

  四種標準的meta-annotation所有定義在java.lang.annotaion包中:
  a, Target
    指定所定義的annotation能夠用在哪些程序單元上
  b, Retention
    指出Java編譯期如何對待annotation
    annotation能夠被編譯期丟掉,或者保留在編譯過的class文件中
    在annotation被保留時,它也指定是否會在JVM加載class時讀取該annotation
  c, Documented
    指出被定義的annotation被視爲所熟悉的程序單元的公開API之一
    被@Documented標註的annotation會在javadoc中顯示,這在annotation對它標註的元素被客戶端使用時有影響時起做用
  d, Inherited
    該meta-annotation應用於目標爲class的annotation類型上,被此annotattion標註的class會自動繼承父類的annotation

D, Annotation的反射
  咱們發現java.lang.Class有許多與Annotation的反射相關的方法,如getAnnotations、isAnnotationpresent

六、新的迭代語句(for(int n:numbers)

七、靜態導入(import static )

八、新的格式化方法(java.util.Formatter)

  formatter.format("Remaining account balance: $%.2f", balance);

九、新的線程模型和併發庫Thread Framework

  HashMap的替代者ConcurrentHashMap和ArrayList的替代者CopyOnWriteArrayList

  在大併發量讀取時採用java.util.concurrent包裏的一些類會讓你們滿意BlockingQueue、Callable、Executor、Semaphore...

 

Java6

一、引入了一個支持腳本引擎的新框架

二、UI的加強

三、WebService支持的加強(JAX-WS2.0JAXB2.0

四、一系列新的安全相關的加強

五、JDBC4.0

六、Compiler API

七、通用的Annotations支持

 

Java7

1. switch中能夠使用字串了

2. 即泛型實例化類型自動推斷

3.語法上支持集合,而不必定是數組

final List<Integer> piDigits = [ 1,2,3,4,5,8 ]; 

4.新增一些取環境信息的工具方法

File System.getJavaIoTempDir() // IO臨時文件夾

File System.getJavaHomeDir() // JRE的安裝目錄

File System.getUserHomeDir() // 當前用戶目錄

File System.getUserDir() // 啓動java進程時所在的目錄

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

Boolean Booleans.negate(Boolean booleanObj)

True => False , False => True, Null => Null

boolean Booleans.and(boolean[] array)

boolean Booleans.or(boolean[] array)

boolean Booleans.xor(boolean[] array)

boolean Booleans.and(Boolean[] array)

boolean Booleans.or(Boolean[] array)

boolean Booleans.xor(Boolean[] array)

6.兩個char間的equals 

boolean Character.equalsIgnoreCase(char ch1, char ch2)

7.安全的加減乘除 

int Math.safeToInt(long value)

int Math.safeNegate(int value)

long Math.safeSubtract(long value1, int value2)

long Math.safeSubtract(long value1, long value2)

int Math.safeMultiply(int value1, int value2)

long Math.safeMultiply(long value1, int value2)

long Math.safeMultiply(long value1, long value2)

long Math.safeNegate(long value)

int Math.safeAdd(int value1, int value2)

long Math.safeAdd(long value1, int value2)

long Math.safeAdd(long value1, long value2)

int Math.safeSubtract(int value1, int value2)

8.map集合支持併發請求,且能夠寫成 Map map = {name:"xxx",age:18};

相關文章
相關標籤/搜索