继承AbstractStringBuffer,我们有了前面的基础,后面再来看StringBuffer的时候其实很容易的。这篇文章和博主的第三篇关联度较大,最好先看一下第三篇。
1.
![](https://img.haomeiwen.com/i12928458/1a26c671a873799d.png)
上来一个transient关键字修饰的变量,第一次见,博主查了一下,这个关键字是在序列化的时候,起作用的,要想用这个关键字,必须先实现Serilizable接口,这个关键字的作用是,在序列化的时候,被这个关键字修饰的属性不会被序列化,这个关键字只能修饰属性,不能修饰方法等别的东西,主要是有时候类中可能会涉及到一些敏感的信息比如说密码之类的东西,在序列化的时候不希望,被序列化进去,就打上这个关键字,
2.
![](https://img.haomeiwen.com/i12928458/95444339a62ef436.png)
![](https://img.haomeiwen.com/i12928458/69087e65756b2dec.png)
![](https://img.haomeiwen.com/i12928458/4b842aa5990036ca.png)
![](https://img.haomeiwen.com/i12928458/93168ef517900e7b.png)
四个构造方法,修饰父类AbstaractStringBuilder的读者,就不多说了
3.
![](https://img.haomeiwen.com/i12928458/c302d5b25fd95a0a.png)
一起来看着几个方法,很简单,都是调用改掉父类的方法,有一点值得注意的是,这几个方法,都是有synchronized方法修饰,如果不知道synchronized重型锁,博主后面会转载一篇文章做详细的介绍,但是这里你要知道这里这些方法,都是经过这个关键字修饰的,就是一个目的保证线程安全,被这个关键字修饰的属性方法,代码块,在执行的时候,同一时刻,只能有一个在执行,其他的都会阻塞。这也就是StringBuffer和StringBuiler的区别,一个是线程安全的, 一个是线程不安全的。
4.
![](https://img.haomeiwen.com/i12928458/a5650b1234390829.png)
![](https://img.haomeiwen.com/i12928458/c6a4662380a33910.png)
![](https://img.haomeiwen.com/i12928458/c4b552584a3a64ac.png)
![](https://img.haomeiwen.com/i12928458/0d9a37850e9900e0.png)
![](https://img.haomeiwen.com/i12928458/93354fc530d970ae.png)
![](https://img.haomeiwen.com/i12928458/52738fd173115d46.png)
![](https://img.haomeiwen.com/i12928458/912f5c58694142ea.png)
和上面一样,方法不多介绍,就提一下多了一个synchronized关键字修复。这些方法底层都是调用了AbstactStringBuiler方法,但是博主有一点很纳闷的是,其中有几个方法没有加上synchronized 关键,如果有人知道的话留言,博主会立刻修改。
5.
![](https://img.haomeiwen.com/i12928458/58da449729005bf7.png)
重写了toString方法,返回toStringCache的内容。
7.
![](https://img.haomeiwen.com/i12928458/bcda8cde3c088bf7.png)
两个读写方法,需要注意写是线程安全的,读是随时可以读的,这两个是私有化方法,内部并没有调用。博主也不清楚为何要写这两个方法。知道的人欢迎留言。
PS:哪里不对可以在评论中指出,我都会一个个看的,觉得少东西也可以评论中提出来,我会做补充。
网友评论