[源码分析]StringBuilder

StringBuilder是继承自AbstractStringBuilder的.

这里附上另外两篇文章的连接:

AbstractStringBuilder : http://www.cnblogs.com/noKing/p/9427967.html

StringBuffer : http://www.cnblogs.com/noKing/p/9431618.html

构造器

我每篇文章都说. 请忽略我的"My". 我copy了jdk的代码, 然后把StringBuilder改为了MyStringBuilder. 核心源码不会改动的.

无参构造器是默认的大小为16.

或者可以直接给定大小. 来规定初始化时的数组大小.

如果是根据传入字符串来构造的, 那么初始大小就是: 传入的字符串长度+16.

常用方法

可以看到, 下面这些方法, 都是直接调用了父类AbstractStringBuilder类的方法. 只是多加了一行return this.

append(重载有很多, 挑了一个):

insert(重载有很多, 挑了一个):

reverse:

toString方法

AbstractStringBuilder类里的toString方法是抽象方法, 所以具体实现在子类里.

总结

虽然很简单, 但还是总结一下吧.

1. 构造的大小和16相关. 要么是16, 要么就是加16.(除非使用了定制数组大小的那个构造器, 也就是 本文中截图的第二个构造器. 那么就是指定多大, 初始数组就是多大了.)

2. 实现了toString方法. 内部实现就是每次toString都是new一个String对象.

3. 其他方法都是调用的父类的方法. 只是多加了一行return this;

4. (区别于StringBuffer) , 明显StringBuilder线程不安全.

[源码分析]StringBuilder的更多相关文章

  1. [源码]String StringBuffer StringBudlider(2)StringBuffer StringBuilder源码分析

      纵骑横飞 章仕烜   昨天比较忙 今天把StringBuffer StringBulider的源码分析 献上   在讲 StringBuffer StringBuilder 之前 ,我们先看一下 ...

  2. String、StringBuffer、StringBuilder源码分析

    利用反编译具体看看"+"的过程 1 public class Test 2 { 3 public static void main(String[] args) 4 { 5 int ...

  3. String,StringBuffer,StringBuilder源码分析

    1.类结构 String Diagrams StringBuffer Diagrams StringBuilder Diagrams 通过以上Diagrams可以看出,String,StringBuf ...

  4. zookeeper源码分析之四服务端(单机)处理请求流程

    上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...

  5. zookeeper源码分析之三客户端发送请求流程

    znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的 ...

  6. MyCat源码分析系列之——SQL下发

    更多MyCat源码分析,请戳MyCat源码分析系列 SQL下发 SQL下发指的是MyCat将解析并改造完成的SQL语句依次发送至相应的MySQL节点(datanode)的过程,该执行过程由NonBlo ...

  7. MyCat源码分析系列之——前后端验证

    更多MyCat源码分析,请戳MyCat源码分析系列 MyCat前端验证 MyCat的前端验证指的是应用连接MyCat时进行的用户验证过程,如使用MySQL客户端时,$ mysql -uroot -pr ...

  8. 【集合框架】JDK1.8源码分析之Collections && Arrays(十)

    一.前言 整个集合框架的常用类我们已经分析完成了,但是还有两个工具类我们还没有进行分析.可以说,这两个工具类对于我们操作集合时相当有用,下面进行分析. 二.Collections源码分析 2.1 类的 ...

  9. Spring源码分析——资源访问利器Resource之实现类分析

    今天来分析Spring的资源接口Resource的各个实现类.关于它的接口和抽象类,参见上一篇博文——Spring源码分析——资源访问利器Resource之接口和抽象类分析 一.文件系统资源 File ...

随机推荐

  1. MyDAL - .Where() & .And() & .Or() 使用

    索引: 目录索引 一.API 列表 1.Where .Where(Func<M, bool> func) 如: .Where( it => (it.Prop1>=条件1 &am ...

  2. django xadmin 1不在可用的选项中

    报错:1不在可用的选项中 解决办法: 对CharField的choices的选项, gender = models.CharField(max_length=, choices=((, , " ...

  3. sql server REPLACE 替换文本中的回车和换行符

    --替换回车符 REPLACE(exp, CHAR(13), '')   --替换换行符 REPLACE(exp, CHAR(10), '')   --水平制表符 REPLACE(exp, CHAR( ...

  4. Windows -- 使用批处理文件.bat删除旧文件

    Windows  --  写一个批处理文件.bat删除旧文件 1. 批处理文件 del_old_file.bat rem 删除D:\temp目录下7天前的文件 Forfiles /p D:\temp ...

  5. 浅析C#中new、override、virtual关键字的区别

    Virtual : virtual 关键字用于修饰方法.属性.索引器或事件声明,并使它们可以在派生类中被重写. 默认情况下,方法是非虚拟的.不能重写非虚方法. virtual 修饰符不能与 stati ...

  6. python接口自动化-session_自动发文

    一.session简介 查看 requests.session() 帮助文档(只贴了一部分内容) import requests help(requests.session()) class Sess ...

  7. pyhton从开始到光棍的day11

    纪念我这个开始学python的光棍天,光棍天依旧是函数,这次的函数有个小高级,比昨天的low函数稍微高级点,就是在使用函数中是可以赋值的,比如索引一个值什么的.函数还可以当做参数进行传递,把这个函数名 ...

  8. ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库

    字符集为ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库  相信大家都对字符集有相当的了解了,废话就不多说了!直接步入正题:这里主要是测试含有 汉字的数据从ZHS16GBK的数据库导入到 ...

  9. 二、PHP基本语法 - PHP零基础快速入门

    我们日常生活中,有些人使用普通话交流,有些人使用家乡话.类比到计算机的世界里,PHP 是人与计算机沟通的语言之一. 既然是语言,那就必须遵循一定的语法规则.譬如 A 向 B 表白,A 会对 B 说:& ...

  10. pytorch识别CIFAR10:训练ResNet-34(自定义transform,动态调整学习率,准确率提升到94.33%)

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 前面通过数据增强,ResNet-34残差网络识别CIFAR10,准确率达到了92.6. 这里对训练过程 ...