String constant
Stringbuffer string variable (thread safety)
Stringbuilder string variable (non-thread-safe)
In short, the main performance difference between the string type and the stringbuffer type is that the string type is an immutable object, therefore, every time the string type is changed, it is equivalent to generating a new
String object, and then point the pointer to the New String object. Therefore, it is best not to use a string that often changes the content, because every generation of the object will affect the system performance, especially when there are no referenced objects in the memory
Later, the jvm gc will start to work, and the speed will be quite slow.
If the stringbuffer class is used, the results will be different. Each result will operate on the stringbuffer object itself, instead of generating a new object, and then change the object reference. Therefore, we recommend
Use stringbuffer, especially when string objects change frequently. In some special cases, the String concatenation of string objects is actually interpreted by JVM as the concatenation of stringbuffer objects.
The string object is not slower than the stringbuffer object. In particular, in the generation of the following string objects, the string efficiency is much faster than the stringbuffer:
String S1 = "this is only a" + "simple" + "test ";
Stringbuffer sb = new stringbuilder ("This is only a"). append ("simple"). append ("test ");
You will be surprised to find that the speed of generating the string S1 object is too fast, and the stringbuffer speed is not dominant at all. In fact, this is a JVM trick.
String S1 = "this is only a" + "simple" + "test"; actually:
String S1 = "this is only a simple test"; so of course it doesn't take much time. However, it should be noted that if your string is from another string object, the speed will not be so fast.
For example:
String S2 = "this is only ";
String S3 = "simple ";
String S4 = "test ";
String S1 = S2 + S3 + S4;
At this time, the JVM will follow the original method in a regular manner.
In most cases, stringbuffer> string
Stringbuffer
Java. Lang. stringbuffer thread-safe variable character sequence. A string buffer similar to a string, but cannot be modified. Although it contains a specific character sequence at any time point
You can change the length and content of the sequence.
The string buffer can be safely used for multiple threads. These methods can be synchronized as necessary. Therefore, all operations on any specific instance may occur in a serial order. This order is consistent with that of each thread involved.
The call sequence is the same.
The main operations on stringbuffer are append and insert methods. You can reload these methods to accept any type of data. Each method can effectively convert the given data into a string, and then convert the character of the string
Append or insert to the string buffer. The append method always adds these characters to the end of the buffer, while the insert method adds the characters at the specified point.
For example, if z references a string buffer object whose current content is "start", this method calls Z. append ("Le") causes the string buffer to contain "startle", while Z. insert (4, "Le") will change the string
Buffer to include "starlet ".
In most cases, stringbuilder> stringbuffer
Java. Lang. stringbuilde
A variable character sequence of Java. Lang. stringbuilder is added to 5.0. This class provides a stringbuffer-compatible API, but does not guarantee synchronization. This class is designed as a simple replacement for stringbuffer
When the string buffer is used by a single thread (this is common ). If possible, we recommend that you use this class first, because in most implementations, It is faster than stringbuffer. The methods are basically the same.