淘客推广网站怎么做,使用密码访问wordpress文章,如何为网站添加谷歌分析工具,国家信用信息公示系统山东使用StringBuffer字符串拼接目的就是为了让字符串占用的内存空间减少#xff0c;提高效率 思考#xff1a;我们在实际的开发中#xff0c;如果需要进行字符串的频繁拼接#xff0c;会有什么问题#xff1f; 答案#xff1a; 因为java中的字符串是不可变的#xff0c;每一…使用StringBuffer字符串拼接目的就是为了让字符串占用的内存空间减少提高效率 思考我们在实际的开发中如果需要进行字符串的频繁拼接会有什么问题 答案 因为java中的字符串是不可变的每一次拼接都会产生新的字符串这样会占用大量的方法区内存造成内存空间的浪费 底层分析 代码演示
public class StringTest05 {public static void main(String[] args) {String sabc;shello;System.out.println(s);//以后要进行大量字符串操作的时候尽量用JDK自带的StringBuffer//创建一个初始化容量为16个byte[]数组也叫做字符串缓冲区对象
//50是初始的容量大小为50不是16了默认情况才是16StringBuffer stringBuffernew StringBuffer(50);//以后拼接字符串统一调用append()方法进行追加stringBuffer.append(a);stringBuffer.append(b);stringBuffer.append(3.15);System.out.println(stringBuffer);}
}管中窥豹
在String类中底层代码其实是字符类型的数组char[] 另外用final修饰也就意味着String在直接创建的时候根据其底层是final修饰的数组这个前提下我们得知一旦创建其长度和内存地址不会发生改变 管中窥豹
StringBuffer中是创建一个16个空间的字符数组 底层调用的是数组的拷贝 画图分析使用String直接创建字符串和使用StringBuffer追加字符串的不同
String是写死容量你创建多少就使用多少
StirngBuffer是动态容量你创建的初始空间是16个字符后续如果超过此数据后会创建一个更大的数组存储那么之前存储的数据首先会拷贝进新的数组内旧的数组会有垃圾回收机制回收 如何优化StringBuffer的性能 在创建StringBuffer的时候尽可能给定一个初始化容量 最好减少底层数组的扩容次数预估计以下给一个足够你创建样本数据的初始化容量