Hello Java

StringBuffer和StringBuilder的区别

2018-08-16  本文已影响9人  Aldeo

String类

特点

使用

常量池

Java运行时会维护一个String Pool(String池),也叫“字符串缓冲区”。String池用来存放运行时钟产生的各种字符串,并且池中的字符串的内容不重复。而一般对象不存在这个缓冲池,并且创建的对象仅仅存在于方法的堆栈区。

String对象的创建原理

原理1

当使用任何方式来创建一个字符串对象s时,Java运行时(运行中JVM)会拿着这个s在String池中找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串s,否则不在池中添加。

原理2

Java中,只要是使用new关键字来创建对象,则一定会(在堆区)创建一个新的对象。

原理3

使用直接指定或者使用纯字符串串联来创建String对象,则仅仅会检查维护String池中的字符串,池中没有就在池中创建一个,如果有就不会创建,但是绝对不会在堆栈区再去创建该String对象。

原理4

使用包含变量的表达式来创建String对象,则不仅会检查维护String池,而且还会在堆栈区创建一个String对象。最后指向堆内存中的对象。

StringBuffer类

为什么要使用StringBuffer类

字符串的不变性:

什么是StringBuffer

创建StringBuffer对象

StringBuilder类

上一篇下一篇

猜你喜欢

热点阅读