Home >Java >javaTutorial >Analysis of the difference between java_String and StringBuffer
The string provided by this StringBuffer class is modified. You can use StringBuffer when you know the character data is going to change. Typically, you use StringBuffers to dynamically construct character data.
There are three classes in java that are responsible for character operations.
1.Character operates on a single character, while
2.String operates on a string of characters. Immutable classes.
3.StringBuffer also operates on a string of characters, but it is a variable class.
String:
is an object that is not a primitive type.
is an immutable object. Once it is created, its value cannot be modified.
Modifications to existing String objects are all new Create a new object and save the new value in it.
String is a final class, that is, it cannot be inherited.
StringBuffer:
is a mutable object, when it is modified The object will not be re-created like String
It can only be created through the constructor,
StringBuffer sb = new StringBuffer();
note: It cannot be paid through the value symbol.
sb = "welcome to here!";//error
After the object is created, memory space will be allocated in the memory and a null will be initially saved. When paying value to StringBuffer
, you can pass its append method.
sb.append("hello");
The above is an excerpt, which is common on the Internet. The following is my own added opinion:
The address cannot be changed, the length and content can be change. The append() method is to append. When the reserved memory is exceeded, the memory is doubled.
Efficiency comparison: StringBuffer is higher than String. Because StringBuffer has reserved space and keeps appending, it only operates on one object. String cannot be modified, and objects can only be created repeatedly to achieve modification. ——If you frequently append, replace, modify, insert, and delete strings, it is best to use StringBuffer. If you must use String, you can use StringBuffer to call toString() to convert it to String.
public static void main(String[] args) { String a=""; long begin=System.currentTimeMillis(); for (int i = 0; i <10000; i++) { a+=i; } long end=System.currentTimeMillis(); System.out.println("String运行时间:"+(end-begin)); System.out.println("-----------------"); StringBuffer b=new StringBuffer(); long begin2=System.currentTimeMillis(); for (int i = 0; i <10000; i++) { b.append(i); } long end2=System.currentTimeMillis(); System.out.println("StringBuffer运行时间:"+(end2-begin2)); }
My machine is pretty rubbish, and the result after execution is
String running time: 164593
-----------------
StringBuffer running time: 31
And String has a contains method, but StringBuffer does not. contains means containing. Here you can recall the contains method
public static void main(String[] args) { String a="abc"; boolean str=a.contains("b"); System.out.println(str); }
The execution result is
true
More details on the use of the StringBuffer class in Java Please pay attention to the PHP Chinese website for articles!