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

Java的JDK下StringBuffer与StringBuilder的区别的更多相关文章

  1. java中String、StringBuffer、StringBuilder的区别

    java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可 ...

  2. Java基础——java中String、StringBuffer、StringBuilder的区别

    (转自:http://www.cnblogs.com/xudong-bupt/p/3961159.html) java中String.StringBuffer.StringBuilder是编程中经常使 ...

  3. Java:String、StringBuffer和StringBuilder的区别

    1 String String:字符串常量,字符串长度不可变.Java中String是immutable(不可变)的. String类的包含如下定义: /** The value is used fo ...

  4. Java的String、StringBuffer和StringBuilder的区别

    1.String 2.Stringbuffer 3.StringBuilder 4.三者之间的区别 5.使用策略 1.String public final class String implemen ...

  5. Java中String,StringBuffer和StringBuilder的区别(转载)

    String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简 要的说, String 类型和 StringBuffer 类型的主要性 ...

  6. java中String、StringBuffer和StringBuilder的区别(简单介绍)

    简单介绍 java中用于处理字符串常用的有三个类: 1.java.lang.String 2.java.lang.StringBuffer 3.java.lang.StrungBuilder 三者共同 ...

  7. Java中String、StringBuffer和StringBuilder的区别

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6581009.html  在编程中,对于字符串拼接,我们可以用String类重载的+或concat(str).S ...

  8. Java中String,StringBuffer,StringBuilder的区别及其使用

    由于笔试面试经常会问到这个问题,所以在这里先把这些问题搞清楚. String:自JDK1.0开始即有,源码中对String的描述: "Strings are constant; their ...

  9. java中String,StringBuffer,StringBuilder的区别

    String: 1,是字符串常量,一旦创建就不能修改.对于已经存在了的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去. 2,String也是final类,不能被继承. 3,而且S ...

随机推荐

  1. ajax json 表格排序,分页,自己定义每页数量

    ajax json 表格排序.分页,自己定义每页数量  点击表头能够排序.依照升序或者降序,另外支持多列排序 设置每页数量 演示   XML/HTML Code <table id='examp ...

  2. oracle11gR2 手工创建基于asm存储的oracle实例

    http://www.cnblogs.com/beanbee/archive/2012/09/22/2697689.html使用命令行手工建立Oracle11gR2数据库 通过命令行建立一个数据库可以 ...

  3. ECS API

    一.API调用方式 ➢对ECS API接口调用是通过向ECS API的服务端地址发送HTTP GET请求,并按照接口说明在请求 中加入相应请求参数来完成的;根据请求的处理情况,系统会返回处理结果. ➢ ...

  4. 《深入理解Java虚拟机》笔记(转)

    文章来自http://www.cnblogs.com/tianchi/archive/2012/11/11/2761631.html 在C里面我们想执行一段自己编写的机器指令的方法大概如下: type ...

  5. Spark学习之JavaRdd

    RDD 介绍 RDD,全称Resilient Distributed Datasets(弹性分布式数据集),是Spark最为核心的概念,是Spark对数据的抽象.RDD是分布式的元素集合,每个RDD只 ...

  6. python 打印 emoji

    python 打印 emoji 如需转发,请注明出处:小婷儿的python  https://www.cnblogs.com/xxtalhr/p/10486506.html 一.Unicode字符集: ...

  7. 工具 使用Fiddler进行手机抓包

    Fiddler 手机抓包 Web代理服务器 可以抓https包 手机和电脑处于同一网络 Tools -> Options... -> Connections Allow remote co ...

  8. CMM:软件成熟度模型

    周末在家闲来无事,泡咖啡看书,正好看到了关于CMM的相关资料,分享出来,也当做学习笔记... 一.CMM简介 CMM,英文全称为Capability Maturity Model for Softwa ...

  9. SkylineGlobe 从v6.1到v6.5 二次开发方面的变化参考

       2.1关于 TerraExplorer v6.5 API 除了一些新的功能,API v6.5不同于API v6.1的最大改进是其对象ID系统.虽然在以前版本的API中,有两个ID系统,一个用于对 ...

  10. maven 基础

    maven安装链接 maven基础命令: 编译命令:mvn compile 测试命令:mvn test 清空命令:mvn clean 打包命令:mvn package 打包命令:mvn install ...