Java学习笔记110——StringBuffer类的练习—区别案例
1、StringBuffer是线程同步安全的,数据安全,效率低 StringBuilder不是线程同步安全的,数据不安全,效率高 2、String的内容是不可变的,StringBuffer和StringBuilder是可变的 3、StringBuffer中的方法是由synchronized关键字修饰的。
案例2:StringBuffer和数组的区别?
它们都可以被看作是一个容器,装一些数据。 但是呢,StringBuffer里面的数据都是一个一个的字符 数组可以存放不同数据类型的数据,但是同一个数组只能存放同一种数据类型的数据
看程序写结果: 探究String与StringBuffer分别作为方法的参数传递的区别
public class StringBufferDemo11 {
public static void main(String[] args) {
// StringBuffer sb = new StringBuffer();
// sb.append("hello");
// System.out.println(sb);
//
// StringBuilder sb2 = new StringBuilder();
// sb2.append("world");
// System.out.println(sb2);
String s1 = "hello";
String s2 = "world";
System.out.println("s1: " + s1+" ,s2:" + s2); //s1:hello ,s2:world
change(s1,s2);
System.out.println("s1: " + s1+" ,s2:" + s2); //s1:hello ,s2:world
System.out.println("*******************************************");
StringBuffer sb1 = new StringBuffer("hello");
StringBuffer sb2 = new StringBuffer("world");
System.out.println("sb1: " + sb1+" ,sb2:" + sb2);
change(sb1,sb2);
System.out.println("sb1: " + sb1+" ,sb2:" + sb2);
//sb1: hello ,sb2:worldworld
}
private static void change(StringBuffer sb1,StringBuffer sb2){
sb1 = sb2;
sb2.append(sb1);
System.out.println("sb1: " + sb1+" ,sb2:" + sb2);
//sb1: worldworld ,sb2:worldworld
}
private static void change(String s12, String s22) {
s12 = s22; //s1:"world"
s22 = s12 + s22; //s2:"worldworld"
System.out.println("s1: " + s12+" ,s2:" + s22);//s1:world ,s2:worldworld
}
}

浙公网安备 33010602011771号