常見物件-StringBuffer的兩個小面試題

ZHOU_VIP發表於2017-05-20

package cn.itcast_08;

/*
 * 面試題:
 * 1:String,StringBuffer,StringBuilder的區別?
 *    String是內容不可變的,而StringBuffer,StringBuilder都是內容可變的。
 *    StringBuffer是同步的,資料安全,效率低;StringBuilder是不同步的,資料不安全,效率高
 * 
 * 2:StringBuffer和陣列的區別?
 *    二者都可以看成是一個容器,裝其他的資料。
 *    但是呢,StringBuffer的資料最終是一個字串資料。
 *    而陣列可以放置多種資料,但必須是同一種資料型別的。
 * 
 * 3:形式引數問題
 *   String作為引數傳遞
 *   StringBuffer作為引數傳遞 
 * 
 * 形式引數:
 * 		基本型別:形式引數的改變不影響實際引數
 * 		引用型別:形式引數的改變直接影響實際引數
 * 
 * 注意:
 * 		String作為引數傳遞,效果和基本型別作為引數傳遞是一樣的。
 */
public class StringBufferDemo {
	public static void main(String[] args) {
		String s1 = "hello";
		String s2 = "world";
		System.out.println(s1 + "---" + s2);  // hello---world
		change(s1, s2);
		System.out.println(s1 + "---" + s2);  // hello---world

		StringBuffer sb1 = new StringBuffer("hello");
		StringBuffer sb2 = new StringBuffer("world");
		System.out.println(sb1 + "---" + sb2);// hello---world
		change(sb1, sb2);
		System.out.println(sb1 + "---" + sb2);// hello---worldworld

	}

	public static void change(StringBuffer sb1, StringBuffer sb2) {
		sb1 = sb2;
		sb2.append(sb1);
	}

	public static void change(String s1, String s2) {
		s1 = s2;
		s2 = s1 + s2;
	}
}


相關文章