StringBuilder、Genenic、for-each、Autobox and Unboxes
<!--[endif]-->
Enum Type
新類:
StringBuilder
非線程同步的情況下可以替代StringBuffer,速度會更快。
主要方法:Append(),insert()
接受參數:可以是任何可以轉換爲string的數據類型包括對象實例。
<!--[if !supportEmptyParas]--> <!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->
Genenic
Collection
讀:String type Collection
<!--[if !supportEmptyParas]--> <!--[endif]-->
for-each
for(Rank rank:a)
讀:for each Rank rank in a
可以用於Iterator或 Array循環中用於替代循環變量。如果在循環體中要使用Iterator或要改變其中的一個值則無法使用。
<!--[if !supportEmptyParas]--> <!--[endif]-->
Autobox and Unboxes
在對性能要求比較嚴格的情況下最好不要使用,因爲自動裝箱和卸箱是要耗費資源的。
<!--[if !supportEmptyParas]--> <!--[endif]-->
Enum Type
聲明枚舉類型:
Public enum Rank {one,two,three};
然後聲明變量:
Private Rank rank;
枚舉類型靜態方法:values();返回該類型值的數據。如:Rank.values();
另一種具有方法的Enum類
Public enum Planet{
//必須將常量聲明置於最前面。
EARTH (32.44,56.55){dosomething(){do some thing specific for earth;}},//爲Planet類型的一個值。多個值用","分隔
VENUS (44.32,23.17){dosomething(){}};//聲明值完成後以";"結束聲明。
Private Double mass;
Private Double radius;
<!--[if !supportEmptyParas]--> <!--[endif]-->
Planet(Double mass,Double radius){
this.mass = mass;
this.radius = radius;
}
<!--[if !supportEmptyParas]--> <!--[endif]-->
Public mass(){return mass);
Public radius(){return radius);
Public void doOtherThing(){
switch (this){ //不同的枚舉常量對同一種方法可以有不同的動作。
case EARTH:doEarthThing;
case VENUS:doVenusThing;
}
throw new AssertionError("Planet枚舉類型沒有此常量" + this);//必須要有此句
//以後新增常量需要在swith語句中補上。爲避免此種情況也可以定義一個抽象的方法,然後在每個常量中覆寫此方法。
}
abstract void dosomething(){do some thing}
}
<!--[if !supportEmptyParas]--> <!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->
使用形式:EARTH.mass(已經import Planet或在同一個package)
<!--[if !supportEmptyParas]--> <!--[endif]-->
EnumSet,EnumMap
java.util 中增加兩個類用於枚舉類型。
EnumSet中的每一個元素都必須是同一種枚舉類型。
enum.values()提供了遍歷全部枚舉值的途徑。如果只想遍歷某個範圍的枚舉值,可以使用EnumSet.rang(Planet.EARTH,Planet.VENUS);