在实际开发当中,我们经常会使用到字符串连接的操作,如果用String来操作,则使用“+”号完成字符串的连接操作。
使用String连接字符串,代码性能会非常低,因为String的内容不可改变。
解决这个问题的方法是使用StringBuffer。
StringBuffer类源码分析
StringBuffer常用操作方法
StringBuffer的兄弟StringBuilder:
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
JDK1.5以后,字符串相加原理分析
package com.vince;
public class StringBuilderDemo {
public static void main(String[] args) {
//面试题 :StringBuffer与StringBuilder的区别?
//StringBuffer是线程安全的,性能低,适合在多线程的使用,JDK1.0
//StringBuilder是线程不安全的,性能高,适合在单线程中使用,这种情况占多大数,在jdk1.5后添加
//StringBuilder sb = new StringBuilder();
//字符串相加操作
//1、多个常量相加没有性能问题 ,在编译期优化
//2、变量与常量相加,会产生多个垃圾对象
//String a = "a"+1;
//String b = a+"b";
String c = null;
for(int i=0;i<5;i++){
c+=i; //每次循环会产生一个StringBuilder对象实现拼接,性能低,最好是手动创建StringBuilder来拼接
}
//1、字符串相加,在编译后,会使用StringBuilder来优化代码,实现拼接
}
}