写这篇的主要目的是为了简单复习一下,并且捎带再详细读一下JDK的源码,学习下人家是如何设计的
String
所有的character strings,在java中就是String这个类的实例。String是一个常量,当被创建之后就不可以被修改,所以是非常安全的。同时,在java中,String之间是可以用加号来进行拼接的(我目前唯一见过的运算符重载)。
首先是它的定义:
1 | public final class String |
很明显,由于有final的定义,所以String类就不能被继承了。然后实现了三个接口,第一个接口是说明String是可以序列化的,第二个说明String之间是可以进行比较的,而最后一个则是对char组合的实现吧。
然后是重要的成员变量:
1 | private final byte[] value; |
可以看到value其实就是String的值,而且也是被final修饰的,故String一旦被赋值了就无法修改。
接下来的coder指定编码的方式。
我感觉….其它方法都挺简单的,注意上面提到的这些即可。
StringBuilder和StringBuffer
这两个其实需要一起讲。
首先它们俩都继承了AbstractStringBuilder,并且都实现了java.io.Serializable, CharSequence,而且它们俩其实都调用的是AbstractStringBuilder里面的方法,只不过StringBuffer在方法之前都加上了一个synchronized……
所以其实如果要了解这两个类,只需要去了解AbstractStringBuilder即可。
AbstractStringBuilder
主要成员变量有三个,分别是:
1 | byte[] value; |
分别对应了真实的值、编码方式和长度。