Java基礎加強可變參數、增強for循環、基本類型的自動拆箱與裝箱、枚舉

一,可變參數
1,什麼是可變參數:當一個方法的參數的類型確定而參數個數不確定時,可以在形參的“類型”與“參數名”之間加上三個連續的“.”(即“...”,英文裏的句中省略號),讓它和不確定個數的實參相匹配。一個帶有這樣的形參的方法,就是一個實參個數可變的方法。
例如:public void write(Object ...objs) 


2,可變參數的特點:
a,只能出現在參數列表的最後;
b,...位於變量類型和變量名之間,前後有無空格都可以;
c,調用可變參數的方法時,編譯器爲該可變參數隱含創建一個數組,在方法體中以數組的形式訪問可變參數。


二,增強for循環
1,語法:
for ( type 變量名:集合變量名 )  { … }
2,注意事項:
a,迭代變量必須在( )中定義!
b,集合變量可以是數組或實現了Iterable接口的集合類
3,舉例:
public static int add(int x,int ...args) {
int sum = x;
for(int arg:args) {
sum += arg;
}
return sum;
}


三,基本類型的自動拆箱與裝箱
1,當我們要創建一個基本數據類型的時候,按照Java默認的語法,需要使用new關鍵字來創建一個對象。在Java1.5之前對於基本數據類型的包裝類只能使用new關鍵字,但是在Java1.5及以後給我們提供了一個基本數據類型的自動裝箱和拆箱功能,可以不使用new關鍵字。


2,示例代碼:
自動裝箱:Integer num1 = 12;
自動拆箱:System.out.println(num1 + 12);


3,享元模式(flyweight pattern):                                            
有很多細粒度的對象,它們之間存在相同屬性和不同屬性。將它們的相同屬性封裝成一個對象,存儲在內存中,下一次要用到這些相同屬性時,直接將內存中存儲的這個對象返回給調用者而不需要重複創建,將不同屬性作爲方法的參數傳入。相同屬性稱爲這個對象的內蘊狀態,不同屬性稱爲這個對象的外蘊狀態。
Integer num1 = 12;
Integer num2 = 12;
System.out.println(num1 == num2);//結果爲true


Integer num3 = 129;
Integer num4 = 129;
System.out.println(num3 == num4); //結果爲false


Integer num5 = Integer.valueOf(12);
Integer num6 = Integer.valueOf(12);
System.out.println(num5 == num6);//結果爲true


在Java中對於-127到128之間的數,因爲數據比較小,而且使用的比較頻繁,在內存中
就保存一份,這樣的設計模式就屬於享元模式。


 4,享元模式的應用條件: 

1)一個系統有大量的對象。 

2)這些對象耗費大量的內存。 

3)這些對象的狀態中的大部分都可以外部化。

4)這些對象可以按照內蘊狀態分成很多的組,當把外蘊對象從對象中剔除時,每一組都可以僅用一個對象代替。

5) 軟件系統不依賴於這些對象的身份,換言之,這些對象可以是不可分辨的。


四,枚舉

1,什麼是枚舉?
在實際應用中,有的變量只有幾種可能的取值。如人的性別只有兩種可能取值,星期只有七種可能取值。在 Java語言中對這樣取值比較特殊的變量可以定義爲枚舉類型。所謂枚舉是指將變量的值一一列舉出來,變量只限於列舉出來的值的範圍內取值。 
定義一個變量是枚舉類型,可以使用關鍵字enum定義一個枚舉類,然後再說明這個變量是枚舉類型。
例如: 
enum weekday{sun,mon,tue,wed,thu,fri,sat}; 
定義了一個枚舉類型名 enum weekday,然後定義變量爲該枚舉類型。例如: 
enum weekday day; 
當然,也可以直接定義枚舉類型變量。例如: 
enum weekday{sun,mon,tue,wed,thu,fri,sat} day; 
其中,sum,mon,…,sat 等稱爲枚舉元素或枚舉常量,它們是用戶定義的標識符。 
2,使用枚舉時該注意的地方:
a,枚舉就相當於一個類,其中也可以定義構造方法、成員變量、普通方法和抽象方法。
b,枚舉元素必須位於枚舉體中的最開始部分,枚舉元素列表的後要有分號與其他成員分隔。把枚舉中的成員方法或變量等放在枚舉元素的前面,編譯器報告錯誤。
c,帶構造方法的枚舉,構造方法必須定義成private。
d,枚舉只有一個成員時,可以作爲一種單例的實現方式。

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