the detailed annotation of StringBuilder
public int capacity()
- 返回当前容量。容量指可用于最新插入字符的存储量,超过这一容量便需要再次分配。
- 返回:
- 当前容量。
- public int length()
- 返回长度(字符数)。
- 指定者:
- 接口
CharSequence
中的length
- 返回:
- 此对象表示的当前字符序列的长度。
- 容量是理论值,长度是实际值。
-
public StringBuilder append(任意类型)
将 任意类型 参数的字符串表示形式追加到序列。
参数将被转换成字符串,就好象使用了String.valueOf
方法一样。然后,将所得字符串中的字符追加到此序列。reverse
public StringBuilder reverse()
- 将此字符序列用其反转形式取代。如果序列中存在代理项对 (surrogate pair),在 reverse 操作中将其作为单个字符处理。因此,高-低代理项的顺序不会反转。假设 n 为执行
reverse
方法前此字符序列的字符长度(并非char
值的长度),则新字符序列中索引 k 处的字符将等于原字符序列索引 n-k-1 处的字符。注意,进行 reverse 操作后,执行操作前未成对的低代理项和高代理项将成为代理项对。例如,反转 "\uDC00\uD800" 将生成有效的代理项对 "\uD800\uDC00"。
- 返回:
- 此对象的一个引用。
- 在这里有人可能会问什么是代理项对?下面将给出详细解释。
- 字面意义是:代理对。实际上是指:对于一个UTF16编码改用两个UTF16编码来代替。
翻译的估计可以是:UTF16编码代理对。
为何需要surrogate pairs?本来一个字符用一个UTF16编码(两个字节)来表示即可,但是由于需要被编码的字符越来越多,只用一个UTF16编码已经不足于表示所有的字符。因此,就需要考虑使用2个UTF16来表示一个字符(四个字节)。但是如果对于所有的字符都这样编码的话,太浪费空间了(原来只需要2个字节,现在都改用4个字节),所以规定,只有使用两个一定范围内的UTF16编码才被认为是一组surrogate pairs,其一起用来表示一个字符,对于其余的情形还是用一个UTF16来表示一个字符。
- 将此字符序列用其反转形式取代。如果序列中存在代理项对 (surrogate pair),在 reverse 操作中将其作为单个字符处理。因此,高-低代理项的顺序不会反转。假设 n 为执行
- 返回长度(字符数)。