JDK1.5版本新特性

1. 方法的可變參數

 public static int add(int ... arr) {
        int length = arr.length;
        int sum = 0;
        for(int i =0; i < length; i++) {
             sum = sum + arr[i];
        }
        return sum;
    }

在方法中用 … 表示可變參數

可變參數必須放在方法參數的最後一個並且有且只有一個 ;

2. for-each 語句

//foreach語句格式:
for(元素類型type  元素變量value : 遍歷對象obj) { 
    //引用x的java語句;  
}

3. 靜態導入(import)(瞭解)

import static 導入一個類的所有靜態域(方法與屬性),
使用導入類的靜態域就像是在本類中定義的一樣;
使用靜態導入後調用那個包中的方法可不加類名直接調用;

注意:不推薦使用靜態導入;

4. 泛型

在定義時類型不確定,只有在具體使用時才能確定類型

4.1 泛型類

class MyClass<T,E> {  //泛型類可以接受多個類型
    private T t;
    private E e;
}

4.2 泛型方法

class MyClass2 {
    //可接收泛型T類型的參數
    public <T> void method(T t) {
        System.out.println(t);
    }  
}

4.3 通配符

<?>: 由於傳入類型無法確定,因此無法設置具體值到相應對象中
public static void fun(Myclass<?> myclass) {
     //程序無法得知?代表哪種類型,無法設置這個對象裏的屬性的值,只能查看
     //myclass.setT("hahaha");   //將會報錯
     System.out.println(myclass.getT());   //輸出null
}

<?extends> :表示泛型上限,類與方法均可使用

public static void fun(Myclass<? extends Number> myclass)

<?super> :表示泛型下限 ,只能用在方法級別

public void fun(Myclass<? super String> myclass){}

4.4 類型擦除

泛型只存在於編譯階段,進入JVM之前,與泛型相關的信息會被完全擦除。

在JVM中並不存在泛型的概念。泛型類在進行類型擦除時,若未指定泛型的上限,泛型相關信息會被擦除爲Object類,否則,擦除爲相應的類型上限。

5. 枚舉

//實際是一個繼承於Enum類的類
enum Color {
    //private int a = 5;  這條語句將會報錯,這不能寫在第一行,第一行必須是要定義的枚舉變量;,,;
}
public class Test1 {
    public static void main(String[] args) {
        System.out.println(Color.);
        System.out.println(Color..ordinal());  //輸出對應下標
        System.out.println(Color..name());
        //產生一個包含所有枚舉變量的數組
        Color[] arr = Color.values();
        for(Color c : arr) {
            System.out.print(c+"、");
        }
    }
}

注意:enum並不是一個新的結構,使用enum定義的枚舉實際上默認繼承Enum枚舉類。因此enum定義的,枚舉結構實際上就是一個多例類;

Enum類常用的三個方法:
ordinal():返回枚舉對象下標,默認第一個對象爲0;
name():返回枚舉對象名稱,默認與對象名稱保持一致;
values():返回所有枚舉對象的數組;

應用枚舉注意:
在枚舉中支持定義其他結構,如構造方法、普通方法和普通屬性等;
當枚舉類中還包含其他結構時,枚舉對象的定義必須放在首行; (否則會編譯報錯)
枚舉不能夠再繼承類,因爲它默認繼承了Enum類,但枚舉可以實現一個或多個接口;

6. jdk內置的三大註解
註解:@標識符 @Override @Controller @Date

  1. 準確覆寫: @Override

    用途:編譯器檢查當前覆寫方法是否滿足要求(方法名稱是否正確、權限是否合理),以達到及時顯示錯誤;

  2. 過期聲明:@Deprecated
    在早期版本的代碼(方法),表示該方法在當前版本中已經不推薦使用,但是使用了也不會報錯。只是起一個警告提示作用;

  3. 壓制警告:@SuppressWarnings
    壓制警告信息,壓制信息不再提示;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章