diff options
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 8 | ||||
-rw-r--r-- | libjava/java/lang/String.java | 39 |
2 files changed, 38 insertions, 9 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index e74022b..84b6b6c 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,13 @@ 2003-03-30 Tom Tromey <tromey@redhat.com> + * java/lang/String.java (data, boffset, count): Documented. + (String(byte[],String)): Reformatted. + (String(byte[])): Likewise. + (lastIndexOf(int)): Likewise. + (lastIndexOf(String)): Likewise. + (substring(int)): Renamed argument to match Classpath. + (String(StringBuffer)): Don't share buffer if it is nearly empty. + * java/lang/String.java: Miscellaneous minor formatting changes to match Classpath more closely. diff --git a/libjava/java/lang/String.java b/libjava/java/lang/String.java index 5011c35..fe00b91 100644 --- a/libjava/java/lang/String.java +++ b/libjava/java/lang/String.java @@ -84,8 +84,26 @@ public final class String implements Serializable, Comparable, CharSequence */ private static final long serialVersionUID = -6849794470754667710L; + /** + * This is the object that holds the characters that make up the + * String. It might be a char[], or it could be String. It could + * even be `this'. The actual characters can't be located using + * pure Java code. + * @see #boffset + */ private Object data; - private int boffset; // Note this is a byte offset - don't use in Java code! + + /** + * This is a <emph>byte</emph> offset of the actual characters from + * the start of the character-holding object. Don't use this field + * in Java code. + */ + private int boffset; + + /** + * Holds the number of characters in value. Package visible for use + * by trusted code. + */ int count; /** @@ -298,7 +316,7 @@ public final class String implements Serializable, Comparable, CharSequence public String(byte[] data, String encoding) throws UnsupportedEncodingException { - this (data, 0, data.length, encoding); + this(data, 0, data.length, encoding); } /** @@ -357,7 +375,7 @@ public final class String implements Serializable, Comparable, CharSequence */ public String(byte[] data) { - this (data, 0, data.length); + this(data, 0, data.length); } /** @@ -371,8 +389,11 @@ public final class String implements Serializable, Comparable, CharSequence { synchronized (buffer) { - buffer.shared = true; - init (buffer.value, 0, buffer.count, true); + // Share unless buffer is 3/4 empty. + boolean should_copy = ((buffer.count << 2) < buffer.value.length); + if (! should_copy) + buffer.shared = true; + init (buffer.value, 0, buffer.count, ! should_copy); } } @@ -721,7 +742,7 @@ public final class String implements Serializable, Comparable, CharSequence */ public int lastIndexOf(int ch) { - return lastIndexOf (ch, count - 1); + return lastIndexOf(ch, count - 1); } /** @@ -770,7 +791,7 @@ public final class String implements Serializable, Comparable, CharSequence */ public int lastIndexOf(String str) { - return lastIndexOf (str, count - str.count); + return lastIndexOf(str, count - str.count); } /** @@ -806,9 +827,9 @@ public final class String implements Serializable, Comparable, CharSequence * @throws IndexOutOfBoundsException if begin < 0 || begin > length() * (while unspecified, this is a StringIndexOutOfBoundsException) */ - public String substring(int beginIndex) + public String substring(int begin) { - return substring (beginIndex, count); + return substring(begin, count); } /** |