String Class is immutable (final modification ), Once a String After the object is created , The sequence of characters contained in this object is immutable , Until the object is destroyed .
public final class String implements java.io.Serializable, Comparable<String>, 
CharSequence 
   StringBuffer
 Object represents a string with variable character sequence , Be a StringBuffer After being created , adopt StringBuffer Provided append(),insert(),reverse(),setCharAt(),setLength() You can change the character sequence of this string object . Once passed StringBuffer The final desired string is generated , You can call its toString() Method to convert it to a String object .
   StringBuilder
 class , It also represents a string object . actually ,StringBuffer and StringBuilder Basically similar , The constructors and methods of the two classes are basically the same . The difference is that ,StringBuffer It's thread safe , and StringBuilder The thread safety function is not implemented , So the performance is slightly higher . So in general , If you need to create a variable content string object , Priority should be given to use StringBuilder class .
 <> Execution speed comparison 
public class JavaTest { public static void main(String[] args) { test1(); test2
(); test3(); } //String static void test1() { String str = null; Long start = 
System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { str = str + 
"hello world!"; } System.out.println(" time consuming :" + (System.currentTimeMillis() - start
)); } //StringBuffer static void test2() { StringBuffer sb = new StringBuffer();
 Long start= System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { sb.
append("hello world!"); } System.out.println(" time consuming :" + (System.currentTimeMillis()
- start)); } //StringBuilder static void test3() { StringBuilder sb = new 
StringBuilder(); Long start = System.currentTimeMillis(); for (int i = 0; i < 
100000; i++) { sb.append("hello world!"); } System.out.println(" time consuming :" + (System.
currentTimeMillis() - start)); } } 
 console output  :
 time consuming :46029  time consuming :11  time consuming :9 
 The execution speed method of the three :StringBuilder > StringBuffer > String
 Usage scenarios :
 *  If you want to operate a small amount of data, use ->String 
 *  Single thread operation string buffer under the operation of a large number of data ->StringBuilder 
 *  Multithreading operation string buffer under the operation of a large number of data ->StringBuffer 
Technology