1. String定义的是不变对象,一旦被创建,就不能修改它的值。
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。
2. StringBuffer 创建的对象则是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象。它只能通过构造函数来建立。
看下面两个程序对比String和StringBuffer的效率
//使用String的程序
- String tempstr = "abcdefghijklmnopqrstuvwxyz";
- int times = 5000;
- long lstart1 = System.currentTimeMillis();
- String str = "";
- for (int i = 0; i < times; i++) {
- str += tempstr;
- }
- long lend1 = System.currentTimeMillis();
- long time = (lend1 - lstart1);
- System.out.println(time);
使用StringBuffer的程序
- String tempstr = "abcdefghijklmnopqrstuvwxyz";
- int times = 5000;
- long lstart2 = System.currentTimeMillis();
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < times; i++) {
- sb.append(tempstr);
- }
- long lend2 = System.currentTimeMillis();
- long time2 = (lend2 - lstart2);
- System.out.println(time2);
运行上述两个程序会发现使用StringBuffer的程序会比使用String的程序快好多倍。
结论:如果在程序中需要对字符串进行频繁的修改连接操作的话.使用StringBuffer性能会更高