JDK5.0新特性 (Day_07)
JDK5.0新特性
目錄
- 靜態匯入
- 自動裝箱/拆箱
- for-each迴圈
- 可變引數 列舉
JDK 5.0 新特性簡介
JDK 5.0 的一個重要主題就是通過新增一些特性來簡化開發,這些特性包括:
- 靜態匯入
- 自動裝箱/拆箱
- for-each迴圈
- 可變引數
- 列舉
- 泛型
- 註解
使用這些特性有助於編寫更加清晰,精悍,安全的程式碼。
1.靜態匯入
JDK5.0增加的靜態匯入語法用於匯入指定類的某個靜態屬性值(方法),
或全部靜態屬性值(方法) 靜態匯入語句使用 import static 語句
匯入指定類的單個靜態屬性: import static java.lang.System.out
匯入指定類全部靜態屬性 import static java.lang.Math.*
2.自動裝箱/拆箱
自動裝箱(autoboxing):把一個基本資料型別直接賦給對應的包裝類變數, 或者賦給 Object 變數
自動拆箱:把包裝類物件直接賦給一個對應的基本型別變數
Ø基本資料型別的自動拆箱與裝箱
- 自動裝箱: Integer num1 = 12;
- 自動拆箱: System.out.println(num1 + 12);
基本資料型別的物件快取: Integer num1 = 12; Integer num2 = 12;
//這塊相等,<=127都是真的 System.out.println(num1 == num2);
Integer num3 = 129; 這塊不相等,因為是物件 Integer num4 = 129;
System.out.println(num3 == num4); Integer num5 = Integer.valueOf(12);
Integer num6 = Integer.valueOf(12) ; 這塊的道理同上 System.out.println(num5 == num6);
自動拆裝箱
* 針對java八大基本資料型別推出
* question1:
* int
* double
*float
* byte
* char
* short
*long
3.for-each迴圈
使用foreach迴圈遍歷陣列和集合元素時, 無須獲得陣列和集合長度, 無須根據索引來訪問陣列元素和集合元素, forearch 迴圈自動遍歷陣列和集合的每個元素
語法格式: for(type varName : array | collection) { //varName 自動迭代訪問每一個元素 }
4.可變引數
從JDK5.0 開始, Java 允許定義形參長度可變的引數,從而允許為方法指定數量不確定的形參 若在定義方法時,
在最後一個形參的型別後增加三點(…), 則表明該形參可以接受多個引數值, 多個引數值被當成陣列傳入 可變形參只能處於形參列表的最後,
所以一個方法最多隻能有一個長度可變的形參 呼叫包含一個可變形參的方法時, 可以為該形參傳入多個引數或一個數組
5.列舉類入門
JDK5 新增的enum關鍵字用於定義列舉類 列舉類和普通類的區別:
使用 enum 定義的列舉類預設繼承了java.lang.Enum類 列舉類的構造器只能使用private訪問控制符 列舉類的所有例項必須在列舉類中顯示列出(”,”分隔,”;”結尾). 列出的事例系統會自動新增 public static final 修飾 所有的列舉類都提供了一個values方法, 該方法可以很方便地遍歷所有的列舉值 JDK5.0 中可以在 switch 表示式中使用列舉類的物件作為表示式, case 子句可以直接使用列舉值的名字, 無需新增列舉類作為限定
java程式碼(自動拆裝箱)
public class Demo1 { public static void main(String[] args) { int i=200; Integer int1=300; Integer int2=300; System.out.println(int1==int2); System.out.println(int1.equals(int2)); System.out.println("-----------------------"); Integer int3=100; Integer int4=100; System.out.println(int3==int4); System.out.println(int3.equals(int4)); System.out.println("--------------------------"); Integer int5=Integer.valueOf(103); Integer int6=Integer.valueOf(103); System.out.println(int5==int6); int x = int5; } }
java程式碼(for迴圈)
public class Demo3 { public static void main(String[] args) { int[] arr = new int[]{10,20,30,40,50}; for (int i:arr) { System.out.println(i); } Set<String> set = new HashSet(); set.add("a"); set.add("b"); set.add("c"); set.add("d"); set.add("e"); for (String s: set) { System.out.println(s); } } }
java程式碼(可變引數)
public class Demo4 { public static void main(String[] args) { Demo4.fun("aa"); Demo4.fun("bb",1); Demo4.fun("cc",1,2,3); int[] arr = new int[]{10,20,30}; Demo4.fun("dd",arr); } public static void fun(String s,int... x){ System.out.println("___________"); System.out.println(x.length); for (int i: x) { System.out.println(i); } } }