0
点赞
收藏
分享

微信扫一扫

探究String作为参数传递与StringBuffer作为参数传递的区别

凉夜lrs 2022-01-22 阅读 103
面试题1:String,StringBuffer,StringBuilder之间的区别
    1、StringBuffer是线程同步安全的,数据安全,效率低。
      StringBuilder不是线程同步安全的,数据不安全,效率高。
    2、String的内容是不可改变的,StringBuffer和StringBuilder是可变序列。
    3、StringBuffer中方法上有synchronized关键字。

面试题2:StringBuffer和数组的区别?
它们都可以被看作是一个容器,装一些数据。
但是,StringBuffer里面的数据都是一个一个字符
数组可以存放不同数据类型的数据,但是同一个数组只能存放同一种数据类型的数据。
public class StringBufferDemo8 {
public static void main(String[] args) {
// //创建一个StringBuffer的对象
// StringBuffer stringBuffer = new StringBuffer();
// //创建一个StringBuilder的对象
// StringBuilder stringBuilder = new StringBuilder();
String s1 = "hello";
String s2 = "world";
System.out.println("s1: " + s1 + ",s2: " + s2);
change(s1, s2);
System.out.println("s1: " + s1 + ",s2: " + s2);

System.out.println("========================================");
StringBuffer sb1 = new StringBuffer("hello");
StringBuffer sb2 = new StringBuffer("world");
System.out.println("sb1: " + sb1 + ",sb2: " + sb2); // hello world
change(sb1, sb2);
System.out.println("sb1: " + sb1 + ",sb2: " + sb2); // sb1: hello,sb2: worldworld
//当多个StringBuffer作为参数传参的时候,谁发生了操作,谁就会受到影响‘

}


public static void change(StringBuffer sb1, StringBuffer sb2) {
sb1 = sb2;
sb2.append(sb1);
System.out.println("sb1: " + sb1 + ",sb2: " + sb2);
//sb1: worldworld,sb2: worldworld
}

public static void change(String s1, String s2) {
s1 = s2;
s2 = s1 + s2;
System.out.println("s1: " + s1 + ",s2: " + s2);
}
}
举报

相关推荐

0 条评论