StringBufferを、関連StringBuilderの顔の質問

1. のStringBufferStringBuilderの区別?
共通で:

彼らは文字の可変配列されています

違い:

StringBufferの:スレッド観点、同期、スレッドセーフなクラスであり、効率が低い
のStringBuilder:スレッドセーフ同期していないクラス、スレッド角、高効率で
単一スレッドプログラムにおける、とのStringBuilder代わりにStringBufferの

2. のStringBuffer、アレイのすべてのコンテナに属しては、違いは何ですか?
StringBufferの:

設定は、内容が文字の内容を文字列変数列に格納されている文字列バッファで、その長さは変更される場合があります!

アレイ:

記憶素子は、同じデータ型int [] ARR = {int型の要素...}である必要があり、配列の長さは固定され、変数をサポートしていません!

3. のStringBuffer文字列の違いは何仮パラメータとしてタイプ?

ストリング:

仮パラメータが同じであるように、その基本的な形としての基準の特殊なタイプ、およびパラメータのデータ型です!

StringBufferの:

仮パラメータ、および参照型として、のように、変更フォームパラメータは、直接実際のパラメータに影響を与えます

    //StringBuffer作为形参
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer("hello") ;
        StringBuffer sb2 = new StringBuffer("world") ;
        System.out.println("sb1:"+sb1); //hello
        System.out.println("sb2:"+sb2);//world
        change(sb1,sb2) ;
        System.out.println("sb1:"+sb1);//hello
        System.out.println("sb2:"+sb2);//worldworld
    }

    public static void change(StringBuffer sb1, StringBuffer sb2) {
        sb1 = sb2 ; // sb1= sb2 = "world"   :直接赋值的形式,形参传递不出去的!
        sb2.append(sb1) ;  //方法调用,形式参数 "worldworld" 是直接可以传递出去的
    }

おすすめ

転載: blog.51cto.com/14651315/2466808