Java的JDK下StringBuffer与StringBuilder的区别

下载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的线程安全性,支持多线程环境。具体如何实现的线程安全,代码量很大,自己细细品味吧!

原文地址:https://www.cnblogs.com/rgqancy/p/5784450.html