The JAVA platform provides two classes: String and StringBuffer, which can store and operate strings, that is, character data containing multiple characters. The String class provides numerically immutable strings.
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:
The object is not a primitive type.
It is an immutable object. Once it is created, its value cannot be modified.
All modifications to the existing String object are re- 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.
The code is as follows:
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 quite 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 including. Here you can recall the contains method
and the code is as follows:
public static void main(String[] args) { String a="abc"; boolean str=a.contains("b"); System.out.println(str); }
The execution result is
true
The above is the detailed content of Difference analysis between java_String and StringBuffer. For more information, please follow other related articles on the PHP Chinese website!