StringBuffer.java
001 /**
002 * @(#)StringBuffer.java 1.101 05/11/17
003 *
004 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
005 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
006 */
007
008 package java.lang;
059 *
060 * @author Arthur van Hoff
061 * @version 1.101, 11/17/05
062 * @see java.lang.StringBuilder
063 * @see java.lang.String
064 * @since JDK1.0
065 */
066 public final class StringBuffer
067 extends AbstractStringBuilder
068 implements java.io.Serializable, CharSequence
069 {
070
071 /*** use serialVersionUID from JDK 1.0.2 for interoperability */
072 static final long serialVersionUID = 3388685877147921107L;
073
078 public StringBuffer() {
079 super(16);
080 }
081
090 public StringBuffer(int capacity) {
091 super(capacity);
092 }
093
102 public StringBuffer(String str) {
103 super(str.length() + 16);
104 append(str);
105 }
106
121 public StringBuffer(CharSequence seq) {
122 this(seq.length() + 16);
123 append(seq);
124 }
125
126 public synchronized int length() {
127 return count;
128 }
129
130 public synchronized int capacity() {
131 return value.length;
132 }
133
134
135 public synchronized void ensureCapacity(int minimumCapacity) {
136 if (minimumCapacity > value.length) {
137 expandCapacity(minimumCapacity);
138 }
139 }
140
144 public synchronized void trimToSize() {
145 super.trimToSize();
146 }
147
152 public synchronized void setLength(int newLength) {
153 super.setLength(newLength);
154 }
155
160 public synchronized char charAt(int index) {
161 if ((index < 0) || (index >= count))
162 throw new StringIndexOutOfBoundsException(index);
163 return value[index];
164 }
165
169 public synchronized int codePointAt(int index) {
170 return super.codePointAt(index);
171 }
172
176 public synchronized int codePointBefore(int index) {
177 return super.codePointBefore(index);
178 }
179
183 public synchronized int codePointCount(int beginIndex, int endIndex) {
184 return super.codePointCount(beginIndex, endIndex);
185 }
186
190 public synchronized int offsetByCodePoints(int index, int codePointOffset) {
191 return super.offsetByCodePoints(index, codePointOffset);
192 }
193
198 public synchronized void getChars(int srcBegin, int srcEnd, char dst[],
199 int dstBegin)
200 {
201 super.getChars(srcBegin, srcEnd, dst, dstBegin);
202 }
203
208 public synchronized void setCharAt(int index, char ch) {
209 if ((index < 0) || (index >= count))
210 throw new StringIndexOutOfBoundsException(index);
211 value[index] = ch;
212 }
213
218 public synchronized StringBuffer append(Object obj) {
219 super.append(String.valueOf(obj));
220 return this;
221 }
222
223 public synchronized StringBuffer append(String str) {
224 super.append(str);
225 return this;
226 }
227
252 public synchronized StringBuffer append(StringBuffer sb) {
253 super.append(sb);
254 return this;
255 }
279 public StringBuffer append(CharSequence s) {
280 // Note, synchronization achieved via other invocations
281 if (s == null)
282 s = "null";
283 if (s instanceof String)
284 return this.append((String)s);
285 if (s instanceof StringBuffer)
286 return this.append((StringBuffer)s);
287 return this.append(s, 0, s.length());
288 }
289
294 public synchronized StringBuffer append(CharSequence s, int start, int end)
295 {
296 super.append(s, start, end);
297 return this;
298 }
299
300 public synchronized StringBuffer append(char str[]) {
301 super.append(str);
302 return this;
303 }
304
305 public synchronized StringBuffer append(char str[], int offset, int len) {
306 super.append(str, offset, len);
307 return this;
308 }
309
314 public synchronized StringBuffer append(boolean b) {
315 super.append(b);
316 return this;
317 }
318
319 public synchronized StringBuffer append(char c) {
320 super.append(c);
321 return this;
322 }
328 public synchronized StringBuffer append(int i) {
329 super.append(i);
330 return this;
331 }
332
336 public synchronized StringBuffer appendCodePoint(int codePoint) {
337 super.appendCodePoint(codePoint);
338 return this;
339 }
340
345 public synchronized StringBuffer append(long lng) {
346 super.append(lng);
347 return this;
348 }
349
354 public synchronized StringBuffer append(float f) {
355 super.append(f);
356 return this;
357 }
358
363 public synchronized StringBuffer append(double d) {
364 super.append(d);
365 return this;
366 }
367
372 public synchronized StringBuffer delete(int start, int end) {
373 super.delete(start, end);
374 return this;
375 }
376
381 public synchronized StringBuffer deleteCharAt(int index) {
382 super.deleteCharAt(index);
383 return this;
384 }
385
390 public synchronized StringBuffer replace(int start, int end, String str) {
391 super.replace(start, end, str);
392 return this;
393 }
394
399 public synchronized String substring(int start) {
400 return substring(start, count);
401 }
402
407 public synchronized CharSequence subSequence(int start, int end) {
408 return super.substring(start, end);
409 }
410
415 public synchronized String substring(int start, int end) {
416 return super.substring(start, end);
417 }
418
423 public synchronized StringBuffer insert(int index, char str[], int offset,
424 int len)
425 {
426 super.insert(index, str, offset, len);
427 return this;
428 }
429
436 public synchronized StringBuffer insert(int offset, Object obj) {
437 super.insert(offset, String.valueOf(obj));
438 return this;
439 }
440
445 public synchronized StringBuffer insert(int offset, String str) {
446 super.insert(offset, str);
447 return this;
448 }
449
453 public synchronized StringBuffer insert(int offset, char str[]) {
454 super.insert(offset, str);
455 return this;
456 }
457
462 public StringBuffer insert(int dstOffset, CharSequence s) {
463 // Note, synchronization achieved via other invocations
464 if (s == null)
465 s = "null";
466 if (s instanceof String)
467 return this.insert(dstOffset, (String)s);
468 return this.insert(dstOffset, s, 0, s.length());
469 }
470
475 public synchronized StringBuffer insert(int dstOffset, CharSequence s,
476 int start, int end)
477 {
478 super.insert(dstOffset, s, start, end);
479 return this;
480 }
481
488 public StringBuffer insert(int offset, boolean b) {
489 return insert(offset, String.valueOf(b));
490 }
491
496 public synchronized StringBuffer insert(int offset, char c) {
497 super.insert(offset, c);
498 return this;
499 }
500
507 public StringBuffer insert(int offset, int i) {
508 return insert(offset, String.valueOf(i));
509 }
510
517 public StringBuffer insert(int offset, long l) {
518 return insert(offset, String.valueOf(l));
519 }
520
527 public StringBuffer insert(int offset, float f) {
528 return insert(offset, String.valueOf(f));
529 }
530
537 public StringBuffer insert(int offset, double d) {
538 return insert(offset, String.valueOf(d));
539 }
540
545 public int indexOf(String str) {
546 return indexOf(str, 0);
547 }
548
553 public synchronized int indexOf(String str, int fromIndex) {
554 return String.indexOf(value, 0, count,
555 str.toCharArray(), 0, str.length(), fromIndex);
556 }
557
562 public int lastIndexOf(String str) {
563 // Note, synchronization achieved via other invocations
564 return lastIndexOf(str, count);
565 }
566
571 public synchronized int lastIndexOf(String str, int fromIndex) {
572 return String.lastIndexOf(value, 0, count,
573 str.toCharArray(), 0, str.length(), fromIndex);
574 }
575
579 public synchronized StringBuffer reverse() {
580 super.reverse();
581 return this;
582 }
583
584 public synchronized String toString() {
585 return new String(value, 0, count);
586 }
587
599 private static final java.io.ObjectStreamField[] serialPersistentFields =
600 {
601 new java.io.ObjectStreamField("value", char[].class),
602 new java.io.ObjectStreamField("count", Integer.TYPE),
603 new java.io.ObjectStreamField("shared", Boolean.TYPE),
604 };
605
610 private synchronized void writeObject(java.io.ObjectOutputStream s)
611 throws java.io.IOException {
612 java.io.ObjectOutputStream.PutField fields = s.putFields();
613 fields.put("value", value);
614 fields.put("count", count);
615 fields.put("shared", false);
616 s.writeFields();
617 }
618
623 private void readObject(java.io.ObjectInputStream s)
624 throws java.io.IOException, ClassNotFoundException {
625 java.io.ObjectInputStream.GetField fields = s.readFields();
626 value = (char[])fields.get("value", null);
627 count = (int)fields.get("count", 0);
628 }
629 }