From 7d23245d2a57e8704a97f2d30971545c3197a570 Mon Sep 17 00:00:00 2001 From: smarks Date: Thu, 21 Nov 2013 16:02:16 -0800 Subject: [PATCH] 7174936: several String methods claim to always create new String Reviewed-by: dholmes, bchristi, alanb, lancea --- src/share/classes/java/lang/String.java | 63 +++++++++++++------------ 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/src/share/classes/java/lang/String.java b/src/share/classes/java/lang/String.java index e0a73d557..4efec8338 100644 --- a/src/share/classes/java/lang/String.java +++ b/src/share/classes/java/lang/String.java @@ -123,7 +123,7 @@ public final class String * Class String is special cased within the Serialization Stream Protocol. * * A String instance is written into an ObjectOutputStream according to - * + * * Object Serialization Specification, Section 6.2, "Stream Elements" */ private static final ObjectStreamField[] serialPersistentFields = @@ -1893,7 +1893,7 @@ public final class String } /** - * Returns a new string that is a substring of this string. The + * Returns a string that is a substring of this string. The * substring begins with the character at the specified index and * extends to the end of this string.

* Examples: @@ -1921,7 +1921,7 @@ public final class String } /** - * Returns a new string that is a substring of this string. The + * Returns a string that is a substring of this string. The * substring begins at the specified {@code beginIndex} and * extends to the character at index {@code endIndex - 1}. * Thus the length of the substring is {@code endIndex-beginIndex}. @@ -1970,6 +1970,7 @@ public final class String *

      * str.substring(begin, end)
* + * @apiNote * This method is defined so that the {@code String} class can implement * the {@link CharSequence} interface. * @@ -1993,8 +1994,8 @@ public final class String * Concatenates the specified string to the end of this string. *

* If the length of the argument string is {@code 0}, then this - * {@code String} object is returned. Otherwise, a new - * {@code String} object is created, representing a character + * {@code String} object is returned. Otherwise, a + * {@code String} object is returned that represents a character * sequence that is the concatenation of the character sequence * represented by this {@code String} object and the character * sequence represented by the argument string.

@@ -2021,13 +2022,13 @@ public final class String } /** - * Returns a new string resulting from replacing all occurrences of + * Returns a string resulting from replacing all occurrences of * {@code oldChar} in this string with {@code newChar}. *

* If the character {@code oldChar} does not occur in the * character sequence represented by this {@code String} object, * then a reference to this {@code String} object is returned. - * Otherwise, a new {@code String} object is created that + * Otherwise, a {@code String} object is returned that * represents a character sequence identical to the character sequence * represented by this {@code String} object, except that every * occurrence of {@code oldChar} is replaced by an occurrence @@ -2818,8 +2819,8 @@ public final class String } /** - * Returns a copy of the string, with leading and trailing whitespace - * omitted. + * Returns a string whose value is this string, with any leading and trailing + * whitespace removed. *

* If this {@code String} object represents an empty character * sequence, or the first and last characters of character sequence @@ -2828,15 +2829,15 @@ public final class String * reference to this {@code String} object is returned. *

* Otherwise, if there is no character with a code greater than - * {@code '\u005Cu0020'} in the string, then a new - * {@code String} object representing an empty string is created - * and returned. + * {@code '\u005Cu0020'} in the string, then a + * {@code String} object representing an empty string is + * returned. *

* Otherwise, let k be the index of the first character in the * string whose code is greater than {@code '\u005Cu0020'}, and let * m be the index of the last character in the string whose code - * is greater than {@code '\u005Cu0020'}. A new {@code String} - * object is created, representing the substring of this string that + * is greater than {@code '\u005Cu0020'}. A {@code String} + * object is returned, representing the substring of this string that * begins with the character at index k and ends with the * character at index m-that is, the result of * {@code this.substring(k, m + 1)}. @@ -2844,7 +2845,7 @@ public final class String * This method may be used to trim whitespace (as defined above) from * the beginning and end of a string. * - * @return A copy of this string with leading and trailing white + * @return A string whose value is this string, with any leading and trailing white * space removed, or this string if it has no leading or * trailing white space. */ @@ -2981,12 +2982,12 @@ public final class String /** * Returns the string representation of the {@code char} array * argument. The contents of the character array are copied; subsequent - * modification of the character array does not affect the newly - * created string. + * modification of the character array does not affect the returned + * string. * - * @param data a {@code char} array. - * @return a newly allocated string representing the same sequence of - * characters contained in the character array argument. + * @param data the character array. + * @return a {@code String} that contains the characters of the + * character array. */ public static String valueOf(char data[]) { return new String(data); @@ -3000,14 +3001,13 @@ public final class String * character of the subarray. The {@code count} argument * specifies the length of the subarray. The contents of the subarray * are copied; subsequent modification of the character array does not - * affect the newly created string. + * affect the returned string. * * @param data the character array. - * @param offset the initial offset into the value of the - * {@code String}. - * @param count the length of the value of the {@code String}. - * @return a string representing the sequence of characters contained - * in the subarray of the character array argument. + * @param offset initial offset of the subarray. + * @param count length of the subarray. + * @return a {@code String} that contains the characters of the + * specified subarray of the character array. * @exception IndexOutOfBoundsException if {@code offset} is * negative, or {@code count} is negative, or * {@code offset+count} is larger than @@ -3018,23 +3018,24 @@ public final class String } /** - * Returns a String that represents the character sequence in the - * array specified. + * Equivalent to {@link #valueOf(char[], int, int)}. * * @param data the character array. * @param offset initial offset of the subarray. * @param count length of the subarray. * @return a {@code String} that contains the characters of the * specified subarray of the character array. + * @exception IndexOutOfBoundsException if {@code offset} is + * negative, or {@code count} is negative, or + * {@code offset+count} is larger than + * {@code data.length}. */ public static String copyValueOf(char data[], int offset, int count) { - // All public String constructors now copy the data. return new String(data, offset, count); } /** - * Returns a String that represents the character sequence in the - * array specified. + * Equivalent to {@link #valueOf(char[])}. * * @param data the character array. * @return a {@code String} that contains the characters of the -- GitLab