String、StringBuffer、StringBuilder

String

1
2
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {}

【两种实例化方式的区别】

  1. 直接赋值(String str = “hello”;):只开辟一块堆内存空间,并且会自动入池,不会产生垃圾。

  2. 构造方法(String str= new String(“hello”);):会开辟两块堆内存空间,其中一块堆内存会变成垃圾被系统回收,而且不能够自动入池,需要通过public String intern();方法进行手工入池。

  3. 在开发的过程中不会采用构造方法进行字符串的实例化

    构造方法赋值

StringBuffer

1
2
3
4
5
6
7
8
9
10
11
12
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence{
......
@Override
public synchronized StringBuffer append(String str) {
toStringCache = null;
super.append(str);
return this;
}
......
}

StringBuilder

1
2
3
4
5
6
7
8
9
10
11
public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence{
......
@Override
public StringBuilder append(String str) {
super.append(str);
return this;
}
......
}

执行速度

在大多数情况下三者在执行速度方面的比较:StringBuilder > StringBuffer > String

详情请前往:String,StringBuffer与StringBuilder的区别??_Java天空-CSDN博客 或者 首页-KuangStudy查询

结论

  • String 字符串常量

  • StringBuffer 字符串变量(线程安全)

  • StringBuilder 字符串变量(非线程安全,执行速度最快)

  • 对于三者使用的总结:

    1)如果要操作少量的数据用 = String

    2)单线程操作字符串缓冲区下操作大量数据 = StringBuilder

    3)多线程操作字符串缓冲区下操作大量数据 = StringBuffer