1、StringBuffer类的append、insert:
append:StringBuffer是字符串缓冲区,new的时候在堆里创建了一个对象,底层是一个长度为16的字符数组,当使用append方法时,不会再创建新的对象,不断向原缓冲区添加字符
insert:直接在第几个指引出插入相应的数据,往后挤一挤~
ppackage cn.njupt;
public class ArrayReverse {
public static void main(String[] args) {
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = sb1.append(true);
StringBuffer sb3 = sb1.append("dasd");
StringBuffer sb4 = sb1.append('e');
StringBuffer sb5 = sb1.append(100);
StringBuffer sb6 = sb1.insert(3,"插入");
System.out.println(sb2);
System.out.println(sb3);
System.out.println(sb4);
System.out.println(sb5);
System.out.println(sb6);
}
}
输出: tru插入edasde100
tru插入edasde100
tru插入edasde100
tru插入edasde100
tru插入edasde100
2、StringBuffer与String互相转换:
-
String --> StringBuffer
a) 构造方法
b) append() 方法 -
StringBuffer --> String
a) 构造方法
b) toString() 方法
c) subString(0,lenth)
3、数组SB相互转换:
sb1 = sb1.append(arr[i] + “]”);
sb1 = sb1.append(arr[i]).append("]");
最好用下面这个,因为String和别的数据相加,会创建一个StringBuffer和toString方法,垃圾比较多
package cn.njupt;
public class ArrayReverse {
public static void main(String[] args) {
int[] arr = { 1, 2, 3 };
array2String(arr);
}
public static void array2String(int[] arr) {
StringBuffer sb1 = new StringBuffer("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
//sb1 = sb1.append(arr[i] + "]");
sb1 = sb1.append(arr[i]).append("]");
} else {
//sb1 = sb1.append(arr[i] + ",");
sb1 = sb1.append(arr[i]).append(",");
}
}
System.out.println(sb1);
}
}
4、两个SB和String之间的区别:
StringBuffer:线程安全,效率低
StringBuilder:线程不安全,效率高,用的比较多
String:不可变的字符序列,而以上两个SB是可变的字符序列
5、String和SB分别作为参数传递:
String虽然是引用类型,但是和基本数据类型一样,是不能通过值传递改变的(因为String创建后就不能改变了),改变的其实是新创建的引用,也就是说,原来的没有动,是新创建的
而SB可以通过值传递,毕竟对象创建在堆里;
package cn.njupt;
public class ArrayReverse {
public static void main(String[] args) {
String str1 = "haha";
change1(str1);
System.out.println(str1);
StringBuffer sb = new StringBuffer();
sb.append("haha");
change2(sb);
System.out.println(sb);
}
public static StringBuffer change2(StringBuffer sb) {
return sb.append("pingan");
}
public static String change1(String str1) {
return str1 + "pingan";
}
}
输出: haha
hahapingan