【坑点】String, StringBuffer, StringBuilder区别?

A. String的内容是不可变的,而后两者是内容可变的

B. StringBuffer是同步的,安全性更高;

     StringBuilder是异步的,非线程安全,性能更高。

 

 

另:

StringBuffer和数组的区别?

答:StringBuffer存放的是字符串

       数组可以存放任意类型数据,但必须是同一类型

 

坑点:

 

 1 public class StudentTest {
 2     public static void main(String[] args) {
 3         String s1 = "hello";
 4         String s2 = "abc";
 5         change(s1, s2);
 6         System.out.println(s1 + "---" + s2);  // 输出 hello---abc
 7 
 8         StringBuffer sb1 = new StringBuffer("hello");
 9         StringBuffer sb2 = new StringBuffer("abc");
10         change(sb1, sb2);
11         System.out.println(sb1 + "---" + sb2);  // 输出 hello---abcabc
12 
13     }
14 
15     public static void change(String s1, String s2) {
16         s1 = s2;
17         s2 = s1 + s2;
18     }
19 
20     public static void change(StringBuffer sb1, StringBuffer sb2) {
21         sb1 = sb2;
22         sb2.append(sb1);
23     }
24 }

总结:String和StringBuffer是特殊的,他们作为参数传递的时候:

      A:直接赋值,效果是和基本数据类型作为参数传递时一样的

      B:StringBuffer调用方法(line 22),效果就成了引用类型

posted @ 2022-03-03 23:04  Ging2000  阅读(43)  评论(0)    收藏  举报