Java5,6,7新特性

Java5:html

1,泛型Genericsjava

A,List<T>,Map<K,V>git

B,類型通配符"?":List<T>api

可使用 Extends 來限制數組

2,枚舉類型 Enumeration安全

3,自動裝箱拆箱 autoboxing unboxing:  int--Integer,Interger--int併發

4,可變參數 varargs(varargs number of arguments)框架

5,Annotations  Java中的元數據metadataide

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

a 、Override

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

b、Deprecated

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

c、SupressWarnings

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

B、自定義annotation

public @interface Marked{}

C、meta-annotation

或者說annotation的annotation

四種標準的meta-annotation所有定義在java.lang.annotaion包中:
a, Target
指定所定義的annotation能夠用在哪些程序單元上
若是Target沒有指定,則表示該annotation可使用在任意程序單元上
代碼
   @Target({ElementType.ANNOTATION_TYPE,  
           ElementType.CONSTRUCTOR,  
           ElementType.FIELD,  
           ElementType.LOCAL_VARIABLE,  
           ElementType.METHOD,  
           ElementType.PACKAGE,  
           ElementType.PARAMETER,  
           ElementType.TYPE})  
   public @interface TODO {}  

b, Retention
指出Java編譯期如何對待annotation
annotation能夠被編譯期丟掉,或者保留在編譯過的class文件中
在annotation被保留時,它也指定是否會在JVM加載class時讀取該annotation
代碼
    @Retention(RetentionPolicy.SOURCE)  // Annotation會被編譯期丟棄  
   public @interface TODO1 {}  
   @Retention(RetentionPolicy.CLASS)   // Annotation保留在class文件中,但會被JVM忽略  
   public @interface TODO2 {}  
   @Retention(RetentionPolicy.RUNTIME) // Annotation保留在class文件中且會被JVM讀取  
   public @interface TODO3 {}  


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
咱們能夠利用Annotation反射來作許多事情,好比自定義Annotation來作Model對象驗證
代碼
   @Retention(RetentionPolicy.RUNTIME)  
   @Target({ ElementType.FIELD, ElementType.METHOD })  
   public @interface RejectEmpty {  
       /** hint title used in error message */  
       String value() default "";  
   }  
     
      @Retention(RetentionPolicy.RUNTIME)  
      @Target( { ElementType.FIELD, ElementType.METHOD })  
      public @interface AcceptInt {  
       int min() default Integer.MIN_VALUE;  
       int max() default Integer.MAX_VALUE;  
       String hint() default "";  
   }  
使用@RejectEmpty和@AcceptInt標註咱們的Model的field,而後利用反射來作Model驗證

六、新的迭代語句(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.0和JAXB2.0)

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

五、JDBC4.0

六、Compiler API

七、通用的Annotations支持

 

Java7:

1,switch中可使用字串了
String s = "test"; 
switch (s) { 
case "test" : 
System.out.println("test"); 
case "test1" : 
System.out.println("test1"); 
break ; 
default : 
System.out.println("break"); 
break ; 
}

2.運用List<String> tempList = new ArrayList<>(); 即泛型實例化類型自動推斷

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

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};

9.try-with-resources

一個聲明一個或多個資源的 try 語句。一個資源做爲一個對象,必須在程序結束以後隨之關閉。 try-with-resources語句確保在語句的最後每一個資源都被關閉 。任何實現了 Java.lang.AutoCloseable的對象, 包括全部實現了 java.io.Closeable 的對象, 均可以用做一個資源

 

 

 原文地址:

http://blog.csdn.net/jackiehff/article/details/17765909

http://blog.csdn.net/heardy/article/details/8184430

相關文章
相關標籤/搜索