String其实就是字符数组,String str="abc";
等效于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
那么String就是字符数组,有关数组的操作在String就有,每个字符其实都有一个下标。
而StringBUffer是一个容器,操作增删改查用这个比较好。
String和StringBuffer的区别相当于数组和ArrayList的区别。
如果用String增字符串和另一个字符串相加用+号,操作的是常量池,那么原来两个字符串还在常量池,又增加了一个加上去后的字符串,等于有三个字符串存在常量池,而其中有两个是没有用的。如果操作的多,就会造成常量池溢出,浪费内存,而常量池是不会回收的。
而StringBuffer操作字符串相加用append,操作的是堆内存。堆内存中有匿名的个体,垃圾回收机制会回收,不会造成内存溢出。所以用字符串的加长、减少等用StringBuffer。
String和StringBuffer是兄弟的关系,不是谁是谁的父亲,都是Object的子类,都是lang包,自动导入。