本章介绍StringBuffer以及它的API的详细使用方法。

转载请注明出处:http://www.cnblogs.com/skywang12345/p/string03.html

StringBuffer 简介

StringBuffer 是一个线程安全的可变的字符序列。它继承于AbstractStringBuilder,实现了CharSequence接口。
StringBuilder 也是继承于AbstractStringBuilder的子类;但是,StringBuilder和StringBuffer不同,前者是非线程安全的,后者是线程安全的。

StringBuffer 和 CharSequence之间的关系图如下:

StringBuffer 详解 (String系列之3)


StringBuffer 函数列表

StringBuffer()
StringBuffer(int capacity)
StringBuffer(String string)
StringBuffer(CharSequence cs)

StringBuffer     append(boolean b)
StringBuffer     append(int i)
StringBuffer     append(long l)
StringBuffer     append(float f)
StringBuffer     append(double d)
synchronized StringBuffer     append(char ch)
synchronized StringBuffer     append(char[] chars)
synchronized StringBuffer     append(char[] chars, int start, int length)
synchronized StringBuffer     append(Object obj)
synchronized StringBuffer     append(String string)
synchronized StringBuffer     append(StringBuffer sb)
synchronized StringBuffer     append(CharSequence s)
synchronized StringBuffer     append(CharSequence s, int start, int end)
StringBuffer     appendCodePoint(int codePoint)
int     capacity()
synchronized char     charAt(int index)
synchronized int     codePointAt(int index)
synchronized int     codePointBefore(int index)
synchronized int     codePointCount(int beginIndex, int endIndex)
synchronized StringBuffer     delete(int start, int end)
synchronized StringBuffer     deleteCharAt(int location)
synchronized void     ensureCapacity(int min)
synchronized void     getChars(int start, int end, char[] buffer, int idx)
synchronized int     indexOf(String subString, int start)
int     indexOf(String string)
StringBuffer     insert(int index, boolean b)
StringBuffer     insert(int index, int i)
StringBuffer     insert(int index, long l)
StringBuffer     insert(int index, float f)
StringBuffer     insert(int index, double d)
synchronized StringBuffer     insert(int index, char ch)
synchronized StringBuffer     insert(int index, char[] chars)
synchronized StringBuffer     insert(int index, char[] chars, int start, int length)
synchronized StringBuffer     insert(int index, String string)
StringBuffer     insert(int index, Object obj)
synchronized StringBuffer     insert(int index, CharSequence s)
synchronized StringBuffer     insert(int index, CharSequence s, int start, int end)
int     lastIndexOf(String string)
synchronized int     lastIndexOf(String subString, int start)
int     length()
synchronized int     offsetByCodePoints(int index, int codePointOffset)
synchronized StringBuffer     replace(int start, int end, String string)
synchronized StringBuffer     reverse()
synchronized void     setCharAt(int index, char ch)
synchronized void     setLength(int length)
synchronized CharSequence     subSequence(int start, int end)
synchronized String     substring(int start)
synchronized String     substring(int start, int end)
synchronized String     toString()
synchronized void     trimToSize()

 

StringBuffer源码(基于jdk1.7.40)

  1 package java.lang;
  2 
  3 public final class StringBuffer
  4     extends AbstractStringBuilder
  5     implements java.io.Serializable, CharSequence
  6 {
  7 
  8     static final long serialVersionUID = 3388685877147921107L;
  9 
 10     public StringBuffer() {
 11         super(16);
 12     }
 13 
 14     public StringBuffer(int capacity) {
 15         super(capacity);
 16     }
 17 
 18     public StringBuffer(String str) {
 19         super(str.length() + 16);
 20         append(str);
 21     }
 22 
 23     public StringBuffer(CharSequence seq) {
 24         this(seq.length() + 16);
 25         append(seq);
 26     }
 27 
 28     public synchronized int length() {
 29         return count;
 30     }
 31 
 32     public synchronized int capacity() {
 33         return value.length;
 34     }
 35 
 36 
 37     public synchronized void ensureCapacity(int minimumCapacity) {
 38         if (minimumCapacity > value.length) {
 39             expandCapacity(minimumCapacity);
 40         }
 41     }
 42 
 43     public synchronized void trimToSize() {
 44         super.trimToSize();
 45     }
 46 
 47     public synchronized void setLength(int newLength) {
 48         super.setLength(newLength);
 49     }
 50 
 51     public synchronized char charAt(int index) {
 52         if ((index < 0) || (index >= count))
 53             throw new StringIndexOutOfBoundsException(index);
 54         return value[index];
 55     }
 56 
 57     public synchronized int codePointAt(int index) {
 58         return super.codePointAt(index);
 59     }
 60 
 61     public synchronized int codePointBefore(int index) {
 62         return super.codePointBefore(index);
 63     }
 64 
 65     public synchronized int codePointCount(int beginIndex, int endIndex) {
 66         return super.codePointCount(beginIndex, endIndex);
 67     }
 68 
 69     public synchronized int offsetByCodePoints(int index, int codePointOffset) {
 70         return super.offsetByCodePoints(index, codePointOffset);
 71     }
 72 
 73     public synchronized void getChars(int srcBegin, int srcEnd, char[] dst,
 74                                       int dstBegin)
 75     {
 76         super.getChars(srcBegin, srcEnd, dst, dstBegin);
 77     }
 78 
 79     public synchronized void setCharAt(int index, char ch) {
 80         if ((index < 0) || (index >= count))
 81             throw new StringIndexOutOfBoundsException(index);
 82         value[index] = ch;
 83     }
 84 
 85     public synchronized StringBuffer append(Object obj) {
 86         super.append(String.valueOf(obj));
 87         return this;
 88     }
 89 
 90     public synchronized StringBuffer append(String str) {
 91         super.append(str);
 92         return this;
 93     }
 94 
 95     public synchronized StringBuffer append(StringBuffer sb) {
 96         super.append(sb);
 97         return this;
 98     }
 99 
100     public StringBuffer append(CharSequence s) {
101         // Note, synchronization achieved via other invocations
102         if (s == null)
103             s = "null";
104         if (s instanceof String)
105             return this.append((String)s);
106         if (s instanceof StringBuffer)
107             return this.append((StringBuffer)s);
108         return this.append(s, 0, s.length());
109     }
110 
111     public synchronized StringBuffer append(CharSequence s, int start, int end)
112     {
113         super.append(s, start, end);
114         return this;
115     }
116 
117     public synchronized StringBuffer append(char[] str) {
118         super.append(str);
119         return this;
120     }
121 
122     public synchronized StringBuffer append(char[] str, int offset, int len) {
123         super.append(str, offset, len);
124         return this;
125     }
126 
127     public synchronized StringBuffer append(boolean b) {
128         super.append(b);
129         return this;
130     }
131 
132     public synchronized StringBuffer append(char c) {
133         super.append(c);
134         return this;
135     }
136 
137     public synchronized StringBuffer append(int i) {
138         super.append(i);
139         return this;
140     }
141 
142     public synchronized StringBuffer appendCodePoint(int codePoint) {
143         super.appendCodePoint(codePoint);
144         return this;
145     }
146 
147     public synchronized StringBuffer append(long lng) {
148         super.append(lng);
149         return this;
150     }
151 
152     public synchronized StringBuffer append(float f) {
153         super.append(f);
154         return this;
155     }
156 
157     public synchronized StringBuffer append(double d) {
158         super.append(d);
159         return this;
160     }
161 
162     public synchronized StringBuffer delete(int start, int end) {
163         super.delete(start, end);
164         return this;
165     }
166 
167     public synchronized StringBuffer deleteCharAt(int index) {
168         super.deleteCharAt(index);
169         return this;
170     }
171 
172     public synchronized StringBuffer replace(int start, int end, String str) {
173         super.replace(start, end, str);
174         return this;
175     }
176 
177     public synchronized String substring(int start) {
178         return substring(start, count);
179     }
180 
181     public synchronized CharSequence subSequence(int start, int end) {
182         return super.substring(start, end);
183     }
184 
185     public synchronized String substring(int start, int end) {
186         return super.substring(start, end);
187     }
188 
189     public synchronized StringBuffer insert(int index, char[] str, int offset,
190                                             int len)
191     {
192         super.insert(index, str, offset, len);
193         return this;
194     }
195 
196     public synchronized StringBuffer insert(int offset, Object obj) {
197         super.insert(offset, String.valueOf(obj));
198         return this;
199     }
200 
201     public synchronized StringBuffer insert(int offset, String str) {
202         super.insert(offset, str);
203         return this;
204     }
205 
206     public synchronized StringBuffer insert(int offset, char[] str) {
207         super.insert(offset, str);
208         return this;
209     }
210 
211     public StringBuffer insert(int dstOffset, CharSequence s) {
212         // Note, synchronization achieved via other invocations
213         if (s == null)
214             s = "null";
215         if (s instanceof String)
216             return this.insert(dstOffset, (String)s);
217         return this.insert(dstOffset, s, 0, s.length());
218     }
219 
220     public synchronized StringBuffer insert(int dstOffset, CharSequence s,
221                                             int start, int end)
222     {
223         super.insert(dstOffset, s, start, end);
224         return this;
225     }
226 
227     public StringBuffer insert(int offset, boolean b) {
228         return insert(offset, String.valueOf(b));
229     }
230 
231     public synchronized StringBuffer insert(int offset, char c) {
232         super.insert(offset, c);
233         return this;
234     }
235 
236     public StringBuffer insert(int offset, int i) {
237         return insert(offset, String.valueOf(i));
238     }
239 
240     public StringBuffer insert(int offset, long l) {
241         return insert(offset, String.valueOf(l));
242     }
243 
244     public StringBuffer insert(int offset, float f) {
245         return insert(offset, String.valueOf(f));
246     }
247 
248     public StringBuffer insert(int offset, double d) {
249         return insert(offset, String.valueOf(d));
250     }
251 
252     public int indexOf(String str) {
253         return indexOf(str, 0);
254     }
255 
256     public synchronized int indexOf(String str, int fromIndex) {
257         return String.indexOf(value, 0, count,
258                               str.toCharArray(), 0, str.length(), fromIndex);
259     }
260 
261     public int lastIndexOf(String str) {
262         // Note, synchronization achieved via other invocations
263         return lastIndexOf(str, count);
264     }
265 
266     public synchronized int lastIndexOf(String str, int fromIndex) {
267         return String.lastIndexOf(value, 0, count,
268                               str.toCharArray(), 0, str.length(), fromIndex);
269     }
270 
271     public synchronized StringBuffer reverse() {
272         super.reverse();
273         return this;
274     }
275 
276     public synchronized String toString() {
277         return new String(value, 0, count);
278     }
279 
280     private static final java.io.ObjectStreamField[] serialPersistentFields =
281     {
282         new java.io.ObjectStreamField("value", char[].class),
283         new java.io.ObjectStreamField("count", Integer.TYPE),
284         new java.io.ObjectStreamField("shared", Boolean.TYPE),
285     };
286 
287     private synchronized void writeObject(java.io.ObjectOutputStream s)
288         throws java.io.IOException {
289         java.io.ObjectOutputStream.PutField fields = s.putFields();
290         fields.put("value", value);
291         fields.put("count", count);
292         fields.put("shared", false);
293         s.writeFields();
294     }
295 
296     private void readObject(java.io.ObjectInputStream s)
297         throws java.io.IOException, ClassNotFoundException {
298         java.io.ObjectInputStream.GetField fields = s.readFields();
299         value = (char[])fields.get("value", null);
300         count = fields.get("count", 0);
301     }
302 }
View Code

相关文章:

  • 2021-06-11
  • 2021-09-22
  • 2021-05-10
  • 2022-01-22
  • 2021-11-28
  • 2021-11-27
  • 2021-05-11
猜你喜欢
  • 2022-12-23
  • 2021-05-27
  • 2021-11-27
  • 2022-01-22
相关资源
相似解决方案