2025-04-23

JAVA1.5後新增語法:

 

 

[java]
1.          泛性編程 
         C 通過模板技術可以指定集合的元素類型,而Java在1.5之前一直沒有相對應的功能。一個集合可以放任何類型的對象,相應地從集合裡面拿對象的時 候我們也不得不對他們進行強制得類型轉換。猛虎引入瞭泛型。例子如下: 
ArrayList<String> list = new ArrayList<String>(); 
list.add(new String("Hello!")); 
System.out.println(list.get(0)); 
2.          自動裝箱/拆箱 
         Java中經常需要在原始數據類型和它們的包裝類之間轉換,尤其是將數據放入Collection容器中和取出來時。為瞭減少這些重復代碼,JDK 5.0添加瞭自動裝箱/解箱操作,從此之後,基本上可以將原始數據類型當作對象來操作瞭。 
         自動裝箱:指開發人員可以把一個基本數據類型直接賦給對應的包裝類。 
         自動拆箱:指開發人員可以把一個包裝類對象直接賦給對應的基本數據類型。 
        例:public void test(){ 
                      Integer i = 1000; //裝箱  
                      int c = i; //拆箱  
                       //典型的應用案例  
                      List list = new ArrayList(); 
                      list.add(12); //裝箱  
                      int temp = (Integer)list.get(0); //拆箱  
                } 
3.          增強的循環結構(for-each循環) 
         引入增強for循環的原因:在JDK5以前的版本中,遍歷數組或集合中的元素,需先獲得數組的長度或集合的迭代器,比較麻煩!加入這種循環方式也是為瞭簡化一些代碼開發,尤其是對Collection容器的遍歷,以前都需要得到Iterator,然後調用next()得到下一個對象,調用hasNext()判斷是否還有,要不停寫這種重復的代碼,用foreach則很簡單。因此JDK5中定義瞭一種新的語法——增強foreach循環,以簡化此類操作。增強for循環隻能用在數組、或實現Iterable接口的集合類上, 語法格式:   
for(變量類型 變量 :需迭代的數組或集合){具體代碼 }                                          
例: int data[] = { 1, 2, 3, 4, 5 }; 
         for(int j : data) 
               System.out.println(j); 
4.          枚舉類型 
         Java添加瞭對枚舉類型的支持,使用enum關鍵字進行定義。下面是一個例子: 
                  public enum Meal {BREAKFAST, LUNCH, SUPPER}; 
              public static void main( String[] args ) { 
                   Meal m = Meal.BREAKFAST; 
                   System.out.println( m );                          
                   } 
    其中定義的每一個常量都是Meal的一個實例。可以看到枚舉類型的定義非常像一個類,可以有方法,可以有構造函數,不過構造函數不能是public或者protected的;此外實例必須在一開始就定義。另外就是enum不能被繼承,因為事實上定義瞭一個enum後,編譯器會自動生成一個繼承瞭java.lang.Enum的同名的類,而Java是不支持多重繼承的,所以定義的enum就不能被繼承瞭,這一點在某些時候帶來瞭一些限制,比如想重用代碼來擴展enum時。此外,註意上面定義中的語法,各個實例間用逗號分隔,實例全部結束後用分號。 
    枚舉類型還定義瞭一些方法:toString(), values()和ordinal()等。 
    enum還支持靜態導入,支持用在switch語句中。 
5.          靜態導入 
         靜態導入非常簡單,就是將一個類的靜態變量或者方法導入,這樣在引用時就不需要再寫類名瞭,減少瞭代碼輸入的工作量。例子如下: 
import static java.lang.System.out; 
public class StaticImport {    
     public static void main( String[] args ) { 
         out.println( "Good" ); 
     } 

代碼中用瞭最常用的輸出語句,原來需要寫System.out.println(),現在將out靜態導入,則隻需寫out.println() 
通常導入的語句也可以寫成import static java.lang.System.*來將該類中的所有靜態變量和方法都導入。可以看到靜態導入是非常簡單的,隻需記住雖然該特性一般稱為“靜態導入(static import)”,寫代碼時卻要寫成“import static”。 
6.          可變參數列表 
         從C中借鑒來的功能,如果方法想要接受任意數目的參數的話,就可以用,得到的參數則用foreach語法一個一個讀出來。以前則可能需要用一大堆的重載方法。形式如: 
 void argtest(Object … args) { 
    for(int i = 0; i < args.length; i++) 
        System.out.println(i); 
 } 
 例子如下: 
  public class Test {    
      public static void test( int…values ) { 
          System.out.println( values.length ); 
          for ( int i : values ) { 
              System.out.println( i ); 
          } 
      }    
      public static void main( String[] args ) { 
          test( 1 ); 
         test( 1, 2 ); 
         test( 1, 2, 3 ); 
     } 
}上面代碼中可以看到,可變參數列表還有個屬性是length。 
然後我們可以這樣調用這個函數: 
argtest(1); 
argtest(1, 2, 4, 5, 6); 
  
7.          格式化輸出 
System.out.printf("This is a test: %4.2f\n", 123.123); 
這就會打印出:This is a test: 123.12 
8.          從終端讀取數據 
         剛開始接觸Java 的時候,我怎麼也不能用Java 在終端像C一樣方便的讀取數據。要從終端讀取一個整數我以前是這麼弄的: 
try { 
    BufferedReader reader = new BufferedReader(new 
              InputStreamReader(System.in)); 
    int i = Integer.parseInt(reader.readLine()); 
} catch(IOException e) { } 
現在好瞭,Java 裡面引入瞭一個Scanner(),可以方便的從終端讀取數據: 
public class ScannerExample{ 
         public static void main(String[] args){ 
                   Scanner read = new Scanner(System.in); 
                   int i = read.nextInt(); 
                   System.out.println(“輸入的i=”+i); 
         } 

1.          泛性編程
         C 通過模板技術可以指定集合的元素類型,而Java在1.5之前一直沒有相對應的功能。一個集合可以放任何類型的對象,相應地從集合裡面拿對象的時 候我們也不得不對他們進行強制得類型轉換。猛虎引入瞭泛型。例子如下:
ArrayList<String> list = new ArrayList<String>();
list.add(new String("Hello!"));
System.out.println(list.get(0));
2.          自動裝箱/拆箱
         Java中經常需要在原始數據類型和它們的包裝類之間轉換,尤其是將數據放入Collection容器中和取出來時。為瞭減少這些重復代碼,JDK 5.0添加瞭自動裝箱/解箱操作,從此之後,基本上可以將原始數據類型當作對象來操作瞭。
         自動裝箱:指開發人員可以把一個基本數據類型直接賦給對應的包裝類。
         自動拆箱:指開發人員可以把一個包裝類對象直接賦給對應的基本數據類型。
        例:public void test(){
                      Integer i = 1000; //裝箱
                      int c = i; //拆箱
                       //典型的應用案例
                      List list = new ArrayList();
                      list.add(12); //裝箱
                      int temp = (Integer)list.get(0); //拆箱
                }
3.          增強的循環結構(for-each循環)
         引入增強for循環的原因:在JDK5以前的版本中,遍歷數組或集合中的元素,需先獲得數組的長度或集合的迭代器,比較麻煩!加入這種循環方式也是為瞭簡化一些代碼開發,尤其是對Collection容器的遍歷,以前都需要得到Iterator,然後調用next()得到下一個對象,調用hasNext()判斷是否還有,要不停寫這種重復的代碼,用foreach則很簡單。因此JDK5中定義瞭一種新的語法——增強foreach循環,以簡化此類操作。增強for循環隻能用在數組、或實現Iterable接口的集合類上, 語法格式: 
for(變量類型 變量 :需迭代的數組或集合){具體代碼 }                                        
例: int data[] = { 1, 2, 3, 4, 5 };
         for(int j : data)
               System.out.println(j);
4.          枚舉類型
         Java添加瞭對枚舉類型的支持,使用enum關鍵字進行定義。下面是一個例子:
                  public enum Meal {BREAKFAST, LUNCH, SUPPER};
              public static void main( String[] args ) {
                   Meal m = Meal.BREAKFAST;
                   System.out.println( m );                        
                   }
    其中定義的每一個常量都是Meal的一個實例。可以看到枚舉類型的定義非常像一個類,可以有方法,可以有構造函數,不過構造函數不能是public或者protected的;此外實例必須在一開始就定義。另外就是enum不能被繼承,因為事實上定義瞭一個enum後,編譯器會自動生成一個繼承瞭java.lang.Enum的同名的類,而Java是不支持多重繼承的,所以定義的enum就不能被繼承瞭,這一點在某些時候帶來瞭一些限制,比如想重用代碼來擴展enum時。此外,註意上面定義中的語法,各個實例間用逗號分隔,實例全部結束後用分號。
    枚舉類型還定義瞭一些方法:toString(), values()和ordinal()等。
    enum還支持靜態導入,支持用在switch語句中。
5.          靜態導入
         靜態導入非常簡單,就是將一個類的靜態變量或者方法導入,這樣在引用時就不需要再寫類名瞭,減少瞭代碼輸入的工作量。例子如下:
import static java.lang.System.out;
public class StaticImport {  
     public static void main( String[] args ) {
         out.println( "Good" );
     }
}
代碼中用瞭最常用的輸出語句,原來需要寫System.out.println(),現在將out靜態導入,則隻需寫out.println()
通常導入的語句也可以寫成import static java.lang.System.*來將該類中的所有靜態變量和方法都導入。可以看到靜態導入是非常簡單的,隻需記住雖然該特性一般稱為“靜態導入(static import)”,寫代碼時卻要寫成“import static”。
6.          可變參數列表
         從C中借鑒來的功能,如果方法想要接受任意數目的參數的話,就可以用,得到的參數則用foreach語法一個一個讀出來。以前則可能需要用一大堆的重載方法。形式如:
 void argtest(Object … args) {
    for(int i = 0; i < args.length; i++)
        System.out.println(i);
 }
 例子如下:
  public class Test {  
      public static void test( int…values ) {
          System.out.println( values.length );
          for ( int i : values ) {
              System.out.println( i );
          }
      }  
      public static void main( String[] args ) {
          test( 1 );
         test( 1, 2 );
         test( 1, 2, 3 );
     }
}上面代碼中可以看到,可變參數列表還有個屬性是length。
然後我們可以這樣調用這個函數:
argtest(1);
argtest(1, 2, 4, 5, 6);
 
7.          格式化輸出
System.out.printf("This is a test: %4.2f\n", 123.123);
這就會打印出:This is a test: 123.12
8.          從終端讀取數據
         剛開始接觸Java 的時候,我怎麼也不能用Java 在終端像C一樣方便的讀取數據。要從終端讀取一個整數我以前是這麼弄的:
try {
    BufferedReader reader = new BufferedReader(new
              InputStreamReader(System.in));
    int i = Integer.parseInt(reader.readLine());
} catch(IOException e) { }
現在好瞭,Java 裡面引入瞭一個Scanner(),可以方便的從終端讀取數據:
public class ScannerExample{
         public static void main(String[] args){
                   Scanner read = new Scanner(System.in);
                   int i = read.nextInt();
                   System.out.println(“輸入的i=”+i);
         }
}

 

 

JAVA1.7後新增語法:

[java]
:對整型支持改進。 
 
        int i = 0b0011; 
        int j = 0b0011_0101; 
 
  以0B或者0b開頭的二進制代碼可以給整型賦值,並且也支持以下劃線_為分割的二進制整型支持,為的是代碼有更好的可讀寫。 
 
2:swicth對String的整型 
復制代碼 
 
        switch (s) { 
        case "1": 
            break; 
        case "2": 
            break; 
        case "3": 
            break; 
 
        } 
 
復制代碼 
 
3:泛型的支持深化 
 
Map<String,String> map=new HashMap<>(); 
 
  這個功能其實帶來的改變不算太大,特別是Java依然沒有改變假泛型。 
 
4:多層次catch 
 
        try { 
         } 
        catch (SQLException | IOException e) { 
            e.printStackTrace(); 
        } 
 
5:自動資源管理 
 
凡是繼承瞭Closeable這個類,系統在方法退出的時候都會自動的關閉資源。 
 
6:FileSystem的API支持 
 
Java7對文件系統支持較為廣泛,無論是copy, move,delete等操作,還是文件系統的監視,遞歸,獲取文件的元數據都有瞭大大的提高。 

1:對整型支持改進。

        int i = 0b0011;
        int j = 0b0011_0101;

  以0B或者0b開頭的二進制代碼可以給整型賦值,並且也支持以下劃線_為分割的二進制整型支持,為的是代碼有更好的可讀寫。

2:swicth對String的整型
復制代碼

        switch (s) {
        case "1":
            break;
        case "2":
            break;
        case "3":
            break;

        }

復制代碼

3:泛型的支持深化

Map<String,String> map=new HashMap<>();

  這個功能其實帶來的改變不算太大,特別是Java依然沒有改變假泛型。

4:多層次catch

        try {
         }
        catch (SQLException | IOException e) {
            e.printStackTrace();
        }

5:自動資源管理

凡是繼承瞭Closeable這個類,系統在方法退出的時候都會自動的關閉資源。

6:FileSystem的API支持

Java7對文件系統支持較為廣泛,無論是copy, move,delete等操作,還是文件系統的監視,遞歸,獲取文件的元數據都有瞭大大的提高。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *