下載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的執行緒安全性,支援多執行緒環境。具體如何實現的執行緒安全,程式碼量很大,自己細細品味吧!