JDK 5.0 特性
1.靜態導入(import static 語句導入一個類中的某個靜態方法或所有靜態方法)
如: import static java.lang.Math.*;2.可變參數
1. 只能出現在參數列表的最後
2. ...位於變量類型和變量名之間,前後有無空格都可以
3. 調用可變參數方法時,編譯器爲該可變參數隱含創建一個數組,在方法體中以數組的形式訪問可變參數
3.增強for循環 for (type 變量名:集合變量名){...}
1.迭代變量必須在()中定義
2.集合變量可以是數組或實現了Iterable接口的集合類
4.基本數據類型的自動拆箱與裝箱
Integer i1 = 10;
Integer i2 = 10;
System.out.println(i1 == i2); (true)
( /*這些小數字(一個字節 -127~128)使用的頻率可能會比較高,所以,不必爲每個數字賦一個對象,而是第一次將這些小數字包裝成對象後,便將其緩存到一個池中,下次
要把這些小數字裝成Integer對象,就往池裏面找,池裏面有的話,就從池子裏面拿,不封裝成對象*/)
Integer i3 = 138;
Integer i4 = 138;
System.out.println(i3 == i4); (false)
享元設計模式 (flyweight):
有很多個小的對象,對象之間有很多屬性相同,把這些小對象 變成一個對象,那些不同的屬性將其變成該大對象方法的參數,稱之爲外部狀態,相同的屬性稱之爲內部狀態
如:在編輯中的一些字母數據,不會每寫一個字母,就創建一個對象,而是創建26個對象,對應26個字母,這26個對象有很多屬性(如都是a)相同,但是位置(x座標,y座標)不同
可以爲26個對象設置一個display(int x,int y)方法,5.枚舉(枚舉可以編譯器在編譯時就可以控制源程序中填寫非法值,普通變量的方式在開發階段無法實現這一目標)
用普通類如何實現枚舉功能,定義一個Weekday的類來模擬枚舉功能
1.私有的構造方法
2.每個元素分別用一個公有的靜態成員變量表示
3.可以有若干公有方法或一個抽象方法 例如:要提供nextDay方法必須是抽象的,採用抽象方法定義nextDay就將大量的if..else語句轉移成了一個個獨立的類
枚舉是一種特殊的類,其中的每個元素都是該類的一個實例對象,例如可以調用WeekDay.SUN.getClass.getName 和WeekDay.class.getName().
java5的枚舉的基本應用
Weekday weekday = Weekday.SUN;
weekday.xxxxx();
public enum {SUN,MON;}
帶有構造方法的枚舉
//1.枚舉類構造函數權限必須爲私有 2.構造函數要放到靜態變量後面
帶有抽象方法的枚舉
public abstract Light nextLight();
RED(60){
@Override
public Light nextLight() {
return GREEN;
}}