java源码分析(5)-StringBuilder

原创 2016年06月01日 10:07:44


StringBuilder

1.StringBuilder类

StringBuilder类由final修饰,不能被继承,并且继承了AbstractStringBuilder类,并完成了toString方法,同时使用了AbstractStringBuilder类中大量的方法。

public final class StringBuilder
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence
{
    public StringBuilder() {
	super(16);//StringBuilder的默认原始容量为16
    }
    public StringBuilder(int capacity) {
	super(capacity);
    }
    public StringBuilder(String str) {
	super(str.length() + 16);//new StringBulider时传入一个字符串,则容量为

字符串长度+16
	append(str);
    }
    public StringBuilder(CharSequence seq) {
        this(seq.length() + 16);
        append(seq);
    }

2.append()

StringBuilder中的append方法基本都是直接调用父类AbstractStringBuilder中的方法,代码在AbstractStringBuilder中已经分析过,不再分析。但要注意的是StringBuilder中append方法全部都为线程不安全,是牺牲了安全用以实现性能。若需要考虑线程的安全性,建议使用StringBuffer。

3.序列化与反序列化

writeObject方法用于将对象序列化,由代码可见,写入了count和value。

readObject方法用于反序列化,将count和value属性读取出来

 private void writeObject(java.io.ObjectOutputStream s)
        throws java.io.IOException {
        s.defaultWriteObject();
        s.writeInt(count);//写入count属性
        s.writeObject(value);//写入value属性
    }
    private void readObject(java.io.ObjectInputStream s)
        throws java.io.IOException, ClassNotFoundException {
        s.defaultReadObject();
        count = s.readInt();//读取count属性
        value = (char[]) s.readObject();//读取value属性
    }


版权声明:本文为博主原创文章,未经博主允许不得转载。

Java String、StringBuffer、StringBuilder源码解析

导读 本篇所讲的内容是java字符串相关的基础知识点。从源码、原理结合案例去剖析知识点,抱着尽量把问题搞明白搞懂的目的,需静心仔细看每一句每一字。 一、String介绍 源码定义: ...
  • csdn_aiyang
  • csdn_aiyang
  • 2017年05月03日 18:27
  • 201

从Java源码角度彻底理解String,StringBuilder和StringBuffer的区别

字符串,就是一系列字符的集合。 Java里面提供了String,StringBuffer和StringBuilder三个类来封装字符串,其中StringBuilder类是到jdk 1.5才新增的...
  • hj7jay
  • hj7jay
  • 2016年10月09日 20:31
  • 3561

StringBuilder 源代码

StringBuilder.java 001 /** 002 * @(#)StringBuilder.java 1.11 05/11/17 003 * 004 * Copyrigh...
  • jzy23682891
  • jzy23682891
  • 2011年12月10日 13:39
  • 1300

Java源码分析--StringBuffer/StringBuilder

在Java中,使用StringBuffer和StringBuilder这两个类表示可变长字符串,这篇博文用来探讨这两个类的源码分析。 继承关系 这两个类的继承关系完全一样,都是如下所示: public...
  • u013165504
  • u013165504
  • 2016年05月01日 15:52
  • 449

Java源码分析之StringBuilder,StringBuffer

这两个类极为相似,都是继承自AbstractStringBuilder,并且都实现了Serializable, CharSequence,区别也很明显,StringBuilder不支持多线程,而Str...
  • matrix5267
  • matrix5267
  • 2017年03月16日 15:29
  • 139

java源码分析---String、StringBuffer、StringBuilder探索

String、StringBuffer、StringBuilder探索 String源码解析在这片博文中我们解析了String相关的构造方法和常用方法,既然有了String类,为何还要有String...
  • uftjtt
  • uftjtt
  • 2018年02月11日 16:28
  • 4

StringBuffer和StringBuilder编程遇到的问题

public class StrBuf {public static void main(String[] args){StringBuffer strBuf = new StringBuffer(3...
  • MMChinaMM
  • MMChinaMM
  • 2016年07月19日 19:08
  • 706

java源码分析

arrayBlockQueue生成(插入元素)在往队列中插入数据由下面几个函数,他们的区别就是对队列满的情况处理不同 - put 一直等待着 - offer(无时间) 如果空了直接返回false ...
  • benbendy1984
  • benbendy1984
  • 2017年02月24日 21:30
  • 420

String StringBuilder StringBuffer三者的特点与及速度阐述

String StringBuilder StringBuffer第1点 String是一个字符串常量,所以他是不可变的。第2点 StringBuilder线程不安全,但是速度最快。第3点 S...
  • u012429294
  • u012429294
  • 2017年03月11日 20:16
  • 265

在StringBuilder里添加换行

sb.append("\r\n");
  • zzldm
  • zzldm
  • 2016年10月11日 17:03
  • 4741
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java源码分析(5)-StringBuilder
举报原因:
原因补充:

(最多只允许输入30个字)