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吧,暂时还不知道这个东西会有什么弊端,持续观察吧