------- android培训、java培训、期待与您交流! ----------
StringBuffer:构造一个其中不带字符的字符串缓冲区,初始容量为16 个字符。
StringBuilder :JDK1.5出现StringBuiler;构造一个其中不带字符的字符串生成器,初始容量为16 个字符。该类被设计用作StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。方法和StringBuffer一样。
特点:
1:可以对字符串内容进行修改
2:是一个容器
3:是可变长度的
4:可以存储任意类型数据
5:最终需要变成字符串
StringBuffer 和StringBuilder 的区别:
StringBuffer线程安全。
StringBuilder线程不安全。
单线程操作,使用StringBuilder 效率高。
多线程操作,使用StringBuffer 安全。
由于StringBuilder和StringBuffer方法基本一样,所以写个StringBuilder的例子
--------------------------------------------------------------------------------------------------------------------------------------------------
StringBuilder sb = new StringBuilder("abcdefg");
sb.append("ak"); //abcdefgak
sb.insert(1,"et"); //aetbcdefg
sb.deleteCharAt(2); //abdefg
sb.delete(2,4); //abefg
sb.setLength(4); //abcd
sb.setCharAt(0,'k'); //kbcdefg
sb.replace(0,2,"hhhh"); //hhhhcdefg
//想要使用缓冲区,先要建立对象。
StringBuffer sb = new StringBuffer();
sb.append(12).append("haha"); //方法调用链。
String s = "abc"+4+'q';
s = new StringBuffer().append("abc").append(4).append('q').toString();
--------------------------------------------------------------------------------------------------------------------------------------------------
class Test{
public static void main(String[] args) {
String s1 = "java";
String s2 = "hello";
method_1(s1,s2);
System.out.println(s1+"...."+s2); //java....hello
StringBuilder s11 = new StringBuilder("java");
StringBuilder s22 = new StringBuilder("hello");
method_2(s11,s22);
System.out.println(s11+"-----"+s22); //javahello-----hello
}
public static void method_1(String s1,String s2){ //s1,s2的内容不会因为此方法而改变
s1.replace('a','k');
s1 = s2;
}
public static void method_2(StringBuilder s1,StringBuilder s2){
s1.append(s2);
s1 = s2;
}
}