StringBuffer in java

2010 年 4 月 15 日7120

JDK1.4 开始StringBuffer才在内部被使用,直到JDK1.5 StringBuffer才被用作连接字符串。通过StringBuffer或StringBuilder连接字符串之后,由此产生的对象再转换成String。

当’+’被使用时,调用步骤如下:
1.创建一个StringBuffer对象
2.String1被复制到新创建的StringBuffer对象中
3.‘*’被附加到StringBuffer对象中(连接)
4.结果被转换回String对象
5.String1的引用被指向新的String地址
6.String1引用之前指向的String对象被置为null.
 
因此,你就知道了,最初是’+’,然后StringBuffer出现了,之后StringBuilder出现。
 

测试字符串连接的Java源代码:

class Clock {
 
  private final long startTime;
 
  public Clock() {
    startTime = System.currentTimeMillis();
  }
 
  public long getElapsedTime() {
    return System.currentTimeMillis() - startTime;
  }
}
 
public class StringConcatenationExample {
 
  static final int N = 47500;
 
  public static void main(String args[]) {
 
    Clock clock = new Clock();
 
    //String to be used for concatenation
    String string1 = "";
    for (int i = 1; i <= N; i++) {
 
      //String concatenation using +
      string1 = string1 + "*";
    }
    //Recording the time taken to concatenate
    System.out.println("Using + Elapsed time: " + clock.getElapsedTime());
 
    clock = new Clock();
    StringBuffer stringBuffer = new StringBuffer();
    for (int i = 1; i <= N; i++) {
 
      //String concatenation using StringBuffer
      stringBuffer.append("*");
    }
    String string2 = stringBuffer.toString();
    System.out.println("Using StringBuffer Elapsed time: " + clock.getElapsedTime());
 
  }
}

0 0