Home  >  Article  >  Java  >  Analysis of the difference between java_String and StringBuffer

Analysis of the difference between java_String and StringBuffer

高洛峰
高洛峰Original
2017-01-22 09:34:131267browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn