String,StringBuffer与StringBuilder的区别

1、Java String类面试

字符串普遍应用在Java编程中,在Java中字符串属于对象,Java提供了String类来建立和操做字符串。编程

须要注意的是String的值是不可变的,这就致使每次对String的操做都会生成新的String对象,这样不只效率低下,并且浪费有限的内存空间。安全

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

2、StringBuffer 和 StringBuilder 类ui

三者区别:.net

string:不可变字符序列线程

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

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

注:内存

String的使用陷阱:

String  ss = "a";

ss +="b";

若是屡次执行这些改变字符串内容的操做,会致使大量副本字符串对象存在内存中,下降效率。若是这样的操做放在循环中,会极大影响程序的性能。

3、代码实例

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

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

相关文章
相关标签/搜索