String类和StringBuffer类的区别

1、String和StringBuffer的区别:

  • String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringBuffer类对象为可修改对象,可以通过append()方法来修改值
  • String类对象的性能远不如StringBuffer类。

关于以上具体解释如下,在java中有3个类来负责字符的操作。

  • Character 是进行单个字符操作的,
  • String 对一串字符进行操作。不可变类。
  • StringBuffer 也是对一串字符进行操作,但是可变类。
public class StringMainTest {

	public static void main(String[] args) {
		String str = "abc";
		String tmp = "";
		long start = System.currentTimeMillis();
		for (int i = 0;i < 500000; i ++) {
			str = str + tmp;
		}
		System.out.println(System.currentTimeMillis() - start);
		
		StringBuffer buf = new StringBuffer("abc");
		long start1 = System.currentTimeMillis();
		for (int i = 0;i < 500000; i ++) {
			buf.append(tmp);
		}
		System.out.println(System.currentTimeMillis() - start1);
	}

}
37
10

2、源码:

String对象的字段定义:

private final char value[];

StringBuffer对象的字段定义:

char[] value;

 

你可能感兴趣的:(Java,JDK,源码分析)