Java的JDK下StringBuffer與StringBuilder的區別

rgqancy發表於2016-08-18

下載JDK的原始碼,我們自己分析下:

用Beyond Compare開啟看一下吧

1.他倆的歷史問題:

StringBuffer:* Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.

StringBuilder:* Copyright (c) 1994, 2008, Oracle and/or its affiliates. All rights reserved.

看來StringBuffer比StringBuilder資歷要老。

2.他倆的祖宗派系問題:

public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence

public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence

看來是同根同宗親兄弟。

3.透過名稱看本質:

用Beyond Compare粗略一看,滿眼"紅色"差異,無非是StringBuffer與StringBuilder的名字問題(中國鯉魚與美國鯉魚是一回事,中國鯉魚到美國成災了)。

 

施展“替換”大法,然後就可以優雅的品程式碼了。

 總得來說,除了增加或減少的一些方法外,主要是StringBuffer的一些方法比StringBuilder增加了synchronized關鍵字,本質目的就是為了保證StringBuffer的執行緒安全性,支援多執行緒環境。具體如何實現的執行緒安全,程式碼量很大,自己細細品味吧!

 

相關文章