java 5.0學習筆記之一

StringBuilderGenenic、for-eachAutobox 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);

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