JAvaにおけるStringBufferとString、StringBuilderの違い

6158 ワード

JavaではStringBufferとStringの使い方がよく見られますが、私自身は使用中、よく両者を混同しています.今日は両者の違いを理解してみましょう.
まず、公式APIの簡単な紹介を見てみましょう.
A string buffer is like a  String , but can be modified. At any point in time it contains some particular sequence of characters, but the length and content of the sequence can be changed through certain method calls.
公式ドキュメントでは、StringBufferとStringは多くの場合似ています.しかしStringBufferには最も明らかな特徴がありますsynchronized
The principal operations on a  StringBuffer  are the  append  and  insert  methods, which are overloaded so as to accept data of any type.
StringBufferで最も主要な方法はAppendとInsertです.
StringBufferは文字列の追加、文字列の削除、文字の挿入速度がStringより優れている.
主な違い:
StringBufferオブジェクトの変更のたびに、オブジェクト自体が変更されます.
1 String first = "bei";
2 String second = "jing";
3 StringBuffer sb = new StringBuffer(first);
4 StringBuffer sb2 = sb;
5 sb2.append(second);
6 System.out.println(sb2);                           //beijing
7 System.out.println(sb.equals(sb2));                //true

 
1:StringBufferオブジェクトの初期化
StringBuffer sBuffer = new StringBuffer("shanghai");

与えられたメソッドを使用してbufferオブジェクトを初期化
StringBufferとStringの間で直接変換することはできません.次のコードはエラーを示します.
StringBuffer sb3 = "nanjing";

もちろん、両者は互いに転化することができます.例えば、
StringBuffer sBuffer = new StringBuffer("shanghai");    //String   buffer  
String add = sBuffer.toString();                //buffer     String  

 
2:文字列の追加
sb.append(String str)
後に文字列を追加
String second = "jing";
StringBuffer sb = new StringBuffer("bei");
sb.append(second);                            //beijing

 
3:文字の削除
StringBuffer sb = new StringBuffer("beijing");
sb.delete(0, 1);                        //eijing            (    )

特定の下付き文字を削除するには、次の手順に従います.
1 StringBuffer sb = new StringBuffer("beijing");
2 sb.deleteCharAt(1)                    //bijing

 
3:文字の挿入
StringBuffer.insert(int offset, String str)     
offset  :          
str:      
StringBuffer sb = new StringBuffer("beijing");      
sb.insert(0, "go to ");            //go to beijing

 
4:反転文字列
StringBuffer sb = new StringBuffer("beijing");
System.out.println(sb.reverse());            //gnijieb

 
5:特定の場所の文字を変更する
StringBuffer sb = new StringBuffer("beijing");
sb.setCharAt(0, 'B');                        //Beijing

 
最初のタイトル部分に戻るとStringBufferとStringBuilderの違いは何ですか? 
両者の機能は基本的に同じで、いずれも操作性に適しており、唯一の違いはStringBuffer isである.  synchronized( )。 StringBuilder is not synchronized。 StringBuilder StringBuilder.
従って、一般的にはStringBufferの代わりにStringBuilderを用いる.
 
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
This class has been supplemented with an equivalent class designed for use by a single thread,  StringBuilder . The  StringBuilder  class should generally be used in preference to this one, as it supports all of the same operations but it is faster, as it performs no synchronization.
 
------------------------------------------------------------------------------------------------------------
 
転載先:https://www.cnblogs.com/xiaxj/p/7886749.html