4.String、StringBufferを、StringBuilderの

、文字列型

文字列型は、参照型であるが、このクラスは、最終的な変形例であり、最終的なクラスは、サブクラス化することができません。

初期化文字列がもはや変更できないと、文字クラスの文字列[]配列の保存されたコンテンツので、最終的な修飾は、もその不変ので、およびchar配列とプライベートStringクラスが変更正方形アレイ値を提供しないので、その文字列は不変です。

文字列は不変なので、それを共有することができます。

二、StringクラスのAPI

1.compareTo

2つの文字列を辞書的に比較します。各ユニコード文字列の比較値に基づいています。

2つの文字列が異なっている、または先頭のインデックスとした場合、彼らは別の文字を持っている、またはそれらは異なる長さを有し、またはその両方。インデックスの問題は、より多くのインデックス文字である場合this.charAt(k)-anotherString.charAt(k)同じ代表は、0未満はそれが辞書の文字列パラメータ文字列以上である0よりも大きい場合、文字列パラメータ辞書順未満を示し、0に等しいです。

彼らはインデックス位置、フィールドオーダーの再文字列の前の長い短い文字列と異なっていない場合。

2.toLowerCase

この文字列内のすべての文字を小文字にします。

3.toUpperCase

この文字列内のすべての文字が大文字に変換されています

4.trim

先頭と末尾の空白を無視して、文字列のコピーを返します。

5.toCharArray

この文字列を新しい文字配列に変換します

6.split

この文字列を分割するためのマッチング与えられた正規表現

7.substring

新しい文字列を返し、彼は文字列のこのシーケンスのサブシーケンスであります

8.concat

指定された文字列は、文字列のこの端部に接続されています。

9.indexOf

この最初のインデックスに表示される文字列を返します。

10.intern

String s1 = new String("aaa");
String s2 = s1.intern();

「AAA」の引用符で囲まれた文字列定数プールがあれば、その後の参照に戻ります

参照文字列の定数プール「AAA」が存在しない場合、それは定数プールS1、S1およびリターンに追加されます。

第三に、文字列の比較

1.直接割り当てによって作成された2つの文字列オブジェクトを比較

直接割り当てプロセスは、文字列オブジェクトを作成するには:まず、文字列定数プール内の同じ文字列値の存在への参照を探し、参照への直接のリターンがある場合、そのオブジェクトを作成し、文字列定数プールに追加されていない場合は、その参照を返します。

注意: Stringクラスは、それが比較方法が同じである文字列の値に等しく、equalsメソッドおよびhashCodeメソッドをオーバーライドします。

2.作成し、比較するために、新たな直接割り当てを作成します。

作成された新しいプロセスは:String s3 = new String("test");1を繰り返し、最初に「テスト」を解決する、プロセスを理解して、文字列オブジェクトの文字列と等しい値を作成します。

//        比较两个通过直接赋值创建的字符串对象
        String s1 = "test";
        String s2 = "test";
        System.out.println(s1 == s2);//true
        System.out.println(s1.equals(s2));//true

//        一个通过直接赋值创建的字符串对象和一个用new创建的字符串对象之间的比较
        String s3 = new String("test");
        System.out.println(s1 == s3);//false
        System.out.println(s3.equals(s1));//true

//        两个用new创建的字符串对象之间的比较
        String s4 = new String("test");
        String s5 = new String("test");
        System.out.println(s4 == s5);//false
        System.out.println(s4.equals(s5));//true

//        测试String的intern方法
        String s6 = s5.intern();
        System.out.println(s1 == s6);//true

四、StringBuilderを、StringBufferの

StringBuilderはスレッドセーフです。StringBufferのは、スレッドセーフです。文字の可変配列。

主なAPIは、挿入して追加することです

追加コンテンツを追加し、コンテンツを挿入するために挿入します。

+の文字列連結の原理を利用して五、文字列

中間のStringBuilder Stringオブジェクトの実装として使用します。

        String str1 = "nishizhuma";
        String str2 = "geiniqidaiergeng";
        String str3 = str1 + str2;
        System.out.println(str3);

上記プロセス達成底に変換することができます。

        String str1 = "nishizhuma";
        String str2 = "geiniqidaiergeng";
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(str1);
        stringBuilder.append(str2);
        String str3 = stringBuilder.toString();

六の速度比較

文字列の連結を使用して文字の文字列+数を比較して、StringBuilderのはスピードをスプライス追加

        String s1 = new String("begin");
        long timeBegin = System.currentTimeMillis();
        for(int i = 0; i < 100000; i++) {
            s1 += i;
        }
        long time = System.currentTimeMillis() - timeBegin;
        System.out.println("string对象" + time);

        StringBuilder s2 = new StringBuilder("begin");
        long timeBegin1 = System.currentTimeMillis();
        for(int i = 0; i < 100000; i++) {
            s2.append(i);
        }
        long time1 = System.currentTimeMillis() - timeBegin1;
        System.out.println("stringBuilder对象" + time1);

結果は、StringBuilderの文字列がより優れていることを示しました。

への文字列の連結の量が多い場合には、StringBuilderのを使用することをお勧めします

七つの空のオブジェクトスプライシング

StringBuilderのは、null文字列スプライシング空のオブジェクトをスプライスします。StringBuilderの使用は+ステッチが実装付加するので、同様にステッチ+。

ソースコード

    public AbstractStringBuilder append(String str) {
        if (str == null)
            return appendNull();
        int len = str.length();
        ensureCapacityInternal(count + len);
        str.getChars(0, len, value, count);
        count += len;
        return this;
    }

4.String、StringBufferを、StringBuilderの

おすすめ

転載: www.cnblogs.com/dearcabbage/p/11227600.html