【坑点】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),效果就成了引用类型

浙公网安备 33010602011771号