一、Java String类

字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串。

需要注意的是String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且浪费有限的内存空间。

String,StringBuffer与StringBuilder的区别-LMLPHP

我们可以看到,初始String值为“hello”,然后在这个字符串后面加上新的字符串“world”,这个过程是需要重新在栈堆内存中开辟内存空间的,最终得到了“hello world”字符串也相应的需要开辟内存空间,这样短短的两个字符串,却需要开辟三次内存空间,不得不说这是对内存空间的极大浪费。为了应对经常性的字符串相关的操作,谷歌引入了两个新的类——StringBuffer类和StringBuild类来对此种变化字符串进行处理。

二、StringBuffer 和 StringBuilder 类

String,StringBuffer与StringBuilder的区别-LMLPHP

三者区别:

string:不可变字符序列

StringBuffer:可变字符序列、线程安全、效率低

StringBuilder:可变字符序列、线程不安全、效率高

注:

String的使用陷阱:

String  ss = "a";

ss +="b";

如果多次执行这些改变字符串内容的操作,会导致大量副本字符串对象存在内存中,降低效率。如果这样的操作放在循环中,会极大影响程序的性能。

三、代码实例

String的拼接与StringBuilder的使用对比,简单的12个字符串的循环解析拼接,相差了28毫秒,没有对比就没有伤害,以后用StringBuilder吧,暂时还不知道这个东西会有什么弊端,持续观察吧

String,StringBuffer与StringBuilder的区别-LMLPHP

每天一道面试题,持续更新@目录

07-02 14:23