Java – StringBuffer、StringBuilder類別

有下列程式:

public class String {
public String toString(){
StringBuffer buffer=new StringBuffer();
buffer.append(‘<‘);
buffer.append(this.name);
buffer.append(‘>’);
return buffer.toString();
}

}

下列敘述何者為真?(請勾選出一項)
( )A. 這段程式不是thread-safe
( )B. 程式人員可以將StringBuffer 改為StringBuilder,而不會改變程式的執行
( )C. 要讓程式更有效率的話,這段程式應改為:rewritten: return”<“+ this.name+”>”;
( )D. 程式若改用 StringBuilder,也不會加強執行效率。

答案是A?,超奇怪的!

因為課本Java物件導向程式設計與SCJP認證明解在運用String、Date及包裝類別的StringBuffer、StringBuilder類別這節裡,提到「StringBuffer提供的方法都是執行緒安全(Thread-safe)的」,那A怎會是對的?我倒覺得檔案B較對!

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

1 則留言

  1. 我想當toString被呼叫時,因為沒有synchronized,所以this.name有機會被其他thread修改,所以不是thread safe。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *