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较对!

2 則留言

  1. 我想当toString被呼叫时,因为没有synchronized,所以this.name有机会被其他thread修改,所以不是thread safe。

  2. 我想当toString被呼叫时,因为没有synchronized,所以this.name有机会被其他thread修改,所以不是thread safe。

Comments are closed.