java.lang.StringIndexOutOfBoundsException
StringIndexOutOfBoundsException is described in the javadoc comments as:
Thrown byString
methods to indicate that an index is either negative or greater than the size of the string. For some methods such as the charAt method, this exception also is thrown when the index is equal to the size of the string.
author: unascribed version: 1.22, 12/19/03 see: java.lang.String#charAt(int) since: JDK1.0
Where is this exception thrown?
Following, is a list of exception messages cross-referenced to the source code responsible for throwing them. Click on the method link to view the code and see how the exception is thrown.
- The message 'java.lang.StringIndexOutOfBoundsException: ' is thrown within the method:
java.lang.AbstractStringBuilder.delete(int, int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
com.sun.org.apache.regexp.internal.ReaderCharacterIterator.charAt(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
com.sun.org.apache.regexp.internal.ReaderCharacterIterator.isEnd(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
com.sun.org.apache.regexp.internal.ReaderCharacterIterator.substring(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
com.sun.org.apache.regexp.internal.ReaderCharacterIterator.substring(int, int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
com.sun.org.apache.regexp.internal.StreamCharacterIterator.charAt(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
com.sun.org.apache.regexp.internal.StreamCharacterIterator.isEnd(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
com.sun.org.apache.regexp.internal.StreamCharacterIterator.substring(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
com.sun.org.apache.regexp.internal.StreamCharacterIterator.substring(int, int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.charAt(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.codePointAt(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.codePointBefore(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.delete(int, int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.deleteCharAt(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.getChars(int, int, char, int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.insert(int, String) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.insert(int, char) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.insert(int, char, int, int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.replace(int, int, String) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.setCharAt(int, char) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.setLength(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.AbstractStringBuilder.substring(int, int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.String.charAt(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.String.checkBounds(byte[], int, int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.String.codePointAt(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.String.codePointBefore(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.String.getBytes(int, int, byte, int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.String.getChars(int, int, char, int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.String.substring(int, int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.StringBuffer.charAt(int) - The message 'java.lang.StringIndexOutOfBoundsException: ...' is thrown within the method:
java.lang.StringBuffer.setCharAt(int, char) - The message 'java.lang.StringIndexOutOfBoundsException: offset ... , len ... , str.length ...' is thrown within the method:
java.lang.AbstractStringBuilder.insert(int, char, int, int) - The message 'java.lang.StringIndexOutOfBoundsException: srcBegin > srcEnd' is thrown within the method:
java.lang.AbstractStringBuilder.getChars(int, int, char, int) - The message 'java.lang.StringIndexOutOfBoundsException: start > end' is thrown within the method:
java.lang.AbstractStringBuilder.replace(int, int, String) - The message 'java.lang.StringIndexOutOfBoundsException: start > length()' is thrown within the method:
java.lang.AbstractStringBuilder.replace(int, int, String)
How is this exception thrown?
The following sub-sections identify where this exception is thrown, and how (or why) the code is throwing the exception.
Any source code quoted in this section is subject to the Java Research License unless stated otherwise.
java.lang.AbstractStringBuilder.delete(int, int)
/** * Removes the characters in a substring of this sequence. * The substring begins at the specified <code>start</code> and extends to * the character at index <code>end - 1</code> or to the end of the * sequence if no such character exists. If * <code>start</code> is equal to <code>end</code>, no changes are made. * @param start The beginning index, inclusive. * @param end The ending index, exclusive. * @return This object. * @throws StringIndexOutOfBoundsException if <code>start</code> * is negative, greater than <code>length()</code>, or * greater than <code>end</code>. */ public AbstractStringBuilder delete(int start, int end) { if (start < 0) throw new StringIndexOutOfBoundsException(start); if (end > count) end = count; if (start > end) throw new StringIndexOutOfBoundsException(); int len = end - start; if (len > 0) { System.arraycopy(value, start + len, value, start, count - end); count -= len; } return this; }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
com.sun.org.apache.regexp.internal.ReaderCharacterIterator.charAt(int)
/** @return a character at the specified position. */ public char charAt(int pos) { try { ensure(pos); return buff.charAt(pos); } catch (IOException e) { throw new StringIndexOutOfBoundsException(e.getMessage()); } }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
com.sun.org.apache.regexp.internal.ReaderCharacterIterator.isEnd(int)
/** @return <tt>true</tt> iff if the specified index is after the end of the character stream */ public boolean isEnd(int pos) { if (buff.length() > pos) { return false; } else { try { ensure(pos); return (buff.length() <= pos); } catch (IOException e) { throw new StringIndexOutOfBoundsException(e.getMessage()); } } }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
com.sun.org.apache.regexp.internal.ReaderCharacterIterator.substring(int)
/** @return a substring */ public String substring(int offset) { try { readAll(); return buff.toString().substring(offset); } catch (IOException e) { throw new StringIndexOutOfBoundsException(e.getMessage()); } }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
com.sun.org.apache.regexp.internal.ReaderCharacterIterator.substring(int, int)
/** @return a substring */ public String substring(int offset, int length) { try { ensure(offset + length); return buff.toString().substring(offset, length); } catch (IOException e) { throw new StringIndexOutOfBoundsException(e.getMessage()); } }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
com.sun.org.apache.regexp.internal.StreamCharacterIterator.charAt(int)
/** @return a character at the specified position. */ public char charAt(int pos) { try { ensure(pos); return buff.charAt(pos); } catch (IOException e) { throw new StringIndexOutOfBoundsException(e.getMessage()); } }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
com.sun.org.apache.regexp.internal.StreamCharacterIterator.isEnd(int)
/** @return <tt>true</tt> iff if the specified index is after the end of the character stream */ public boolean isEnd(int pos) { if (buff.length() > pos) { return false; } else { try { ensure(pos); return (buff.length() <= pos); } catch (IOException e) { throw new StringIndexOutOfBoundsException(e.getMessage()); } } }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
com.sun.org.apache.regexp.internal.StreamCharacterIterator.substring(int)
/** @return a substring */ public String substring(int offset) { try { readAll(); return buff.toString().substring(offset); } catch (IOException e) { throw new StringIndexOutOfBoundsException(e.getMessage()); } }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
com.sun.org.apache.regexp.internal.StreamCharacterIterator.substring(int, int)
/** @return a substring */ public String substring(int offset, int length) { try { ensure(offset + length); return buff.toString().substring(offset, length); } catch (IOException e) { throw new StringIndexOutOfBoundsException(e.getMessage()); } }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.AbstractStringBuilder.charAt(int)
/** * Returns the <code>char</code> value in this sequence at the specified index. * The first <code>char</code> value is at index <code>0</code>, the next at index * <code>1</code>, and so on, as in array indexing. * The index argument must be greater than or equal to * <code>0</code>, and less than the length of this sequence. * If the <code>char</code> value specified by the index is a * <a href='Character.html#unicode'>surrogate</a>, the surrogate * value is returned. * @param index the index of the desired <code>char</code> value. * @return the <code>char</code> value at the specified index. * @throws IndexOutOfBoundsException if <code>index</code> is * negative or greater than or equal to <code>length()</code>. */ public char charAt(int index) { if ((index < 0) || (index >= count)) throw new StringIndexOutOfBoundsException(index); return value[index]; }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.AbstractStringBuilder.codePointAt(int)
/** * Returns the character (Unicode code point) at the specified * index. The index refers to <code>char</code> values * (Unicode code units) and ranges from <code>0</code> to * {@link #length()}<code> - 1</code>. * If the <code>char</code> value specified at the given index * is in the high-surrogate range, the following index is less * than the length of this sequence, and the * <code>char</code> value at the following index is in the * low-surrogate range, then the supplementary code point * corresponding to this surrogate pair is returned. Otherwise, * the <code>char</code> value at the given index is returned. * @param index the index to the <code>char</code> values * @return the code point value of the character at the * <code>index</code> * @exception IndexOutOfBoundsException if the <code>index</code> * argument is negative or not less than the length of this * sequence. */ public int codePointAt(int index) { if ((index < 0) || (index >= count)) { throw new StringIndexOutOfBoundsException(index); } return Character.codePointAt(value, index); }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.AbstractStringBuilder.codePointBefore(int)
/** * Returns the character (Unicode code point) before the specified * index. The index refers to <code>char</code> values * (Unicode code units) and ranges from <code>1</code> to {@link * #length()}. * If the <code>char</code> value at <code>(index - 1)</code> * is in the low-surrogate range, <code>(index - 2)</code> is not * negative, and the <code>char</code> value at <code>(index - * 2)</code> is in the high-surrogate range, then the * supplementary code point value of the surrogate pair is * returned. If the <code>char</code> value at <code>index - * 1</code> is an unpaired low-surrogate or a high-surrogate, the * surrogate value is returned. * @param index the index following the code point that should be returned * @return the Unicode code point value before the given index. * @exception IndexOutOfBoundsException if the <code>index</code> * argument is less than 1 or greater than the length * of this sequence. */ public int codePointBefore(int index) { int i = index - 1; if ((i < 0) || (i >= count)) { throw new StringIndexOutOfBoundsException(index); } return Character.codePointBefore(value, index); }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.AbstractStringBuilder.deleteCharAt(int)
/** * Removes the <code>char</code> at the specified position in this * sequence. This sequence is shortened by one <code>char</code>. * Note: If the character at the given index is a supplementary * character, this method does not remove the entire character. If * correct handling of supplementary characters is required, * determine the number of <code>char</code>s to remove by calling * <code>Character.charCount(thisSequence.codePointAt(index))</code>, * where <code>thisSequence</code> is this sequence. * @param index Index of <code>char</code> to remove * @return This object. * @throws StringIndexOutOfBoundsException if the <code>index</code> * is negative or greater than or equal to * <code>length()</code>. */ public AbstractStringBuilder deleteCharAt(int index) { if ((index < 0) || (index >= count)) throw new StringIndexOutOfBoundsException(index); System.arraycopy(value, index + 1, value, index, count - index - 1); count--; return this; }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.AbstractStringBuilder.getChars(int, int, char, int)
/** * Characters are copied from this sequence into the * destination character array <code>dst</code>. The first character to * be copied is at index <code>srcBegin</code>; the last character to * be copied is at index <code>srcEnd-1</code>. The total number of * characters to be copied is <code>srcEnd-srcBegin</code>. The * characters are copied into the subarray of <code>dst</code> starting * at index <code>dstBegin</code> and ending at index: * <blockquote> * dstbegin + (srcEnd-srcBegin) - 1 * </blockquote> * @param srcBegin start copying at this offset. * @param srcEnd stop copying at this offset. * @param dst the array to copy the data into. * @param dstBegin offset into <code>dst</code>. * @throws NullPointerException if <code>dst</code> is * <code>null</code>. * @throws IndexOutOfBoundsException if any of the following is true: * <ul> * <li><code>srcBegin</code> is negative * <li><code>dstBegin</code> is negative * <li>the <code>srcBegin</code> argument is greater than * the <code>srcEnd</code> argument. * <li><code>srcEnd</code> is greater than * <code>this.length()</code>. * <li><code>dstBegin+srcEnd-srcBegin</code> is greater than * <code>dst.length</code> * </ul> */ public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) { if (srcBegin < 0) throw new StringIndexOutOfBoundsException(srcBegin); if ((srcEnd < 0) || (srcEnd > count)) throw new StringIndexOutOfBoundsException(srcEnd); if (srcBegin > srcEnd) throw new StringIndexOutOfBoundsException('srcBegin > srcEnd'); System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd - srcBegin); }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.AbstractStringBuilder.insert(int, String)
/** * Inserts the string into this character sequence. * The characters of the <code>String</code> argument are inserted, in * order, into this sequence at the indicated offset, moving up any * characters originally above that position and increasing the length * of this sequence by the length of the argument. If * <code>str</code> is <code>null</code>, then the four characters * <code>'null'</code> are inserted into this sequence. * The character at index <i>k</i> in the new character sequence is * equal to: * <ul> * <li>the character at index <i>k</i> in the old character sequence, if * <i>k</i> is less than <code>offset</code> * <li>the character at index <i>k</i><code>-offset</code> in the * argument <code>str</code>, if <i>k</i> is not less than * <code>offset</code> but is less than <code>offset+str.length()</code> * <li>the character at index <i>k</i><code>-str.length()</code> in the * old character sequence, if <i>k</i> is not less than * <code>offset+str.length()</code> * </ul> * The offset argument must be greater than or equal to * <code>0</code>, and less than or equal to the length of this * sequence. * @param offset the offset. * @param str a string. * @return a reference to this object. * @throws StringIndexOutOfBoundsException if the offset is invalid. */ public AbstractStringBuilder insert(int offset, String str) { if ((offset < 0) || (offset > length())) throw new StringIndexOutOfBoundsException(offset); if (str == null) str = 'null'; int len = str.length(); int newCount = count + len; if (newCount > value.length) expandCapacity(newCount); System.arraycopy(value, offset, value, offset + len, count - offset); str.getChars(value, offset); count = newCount; return this; }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.AbstractStringBuilder.insert(int, char)
/** * Inserts the string representation of the <code>char</code> array * argument into this sequence. * The characters of the array argument are inserted into the * contents of this sequence at the position indicated by * <code>offset</code>. The length of this sequence increases by * the length of the argument. * The overall effect is exactly as if the argument were converted to * a string by the method {@link String#valueOf(char[])} and the * characters of that string were then * {@link #insert(int,String) inserted} into this * character sequence at the position indicated by * <code>offset</code>. * @param offset the offset. * @param str a character array. * @return a reference to this object. * @throws StringIndexOutOfBoundsException if the offset is invalid. */ public AbstractStringBuilder insert(int offset, char str[]) { if ((offset < 0) || (offset > length())) throw new StringIndexOutOfBoundsException(offset); int len = str.length; int newCount = count + len; if (newCount > value.length) expandCapacity(newCount); System.arraycopy(value, offset, value, offset + len, count - offset); System.arraycopy(str, 0, value, offset, len); count = newCount; return this; }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.AbstractStringBuilder.insert(int, char, int, int)
/** * Inserts the string representation of a subarray of the <code>str</code> * array argument into this sequence. The subarray begins at the * specified <code>offset</code> and extends <code>len</code> <code>char</code>s. * The characters of the subarray are inserted into this sequence at * the position indicated by <code>index</code>. The length of this * sequence increases by <code>len</code> <code>char</code>s. * @param index position at which to insert subarray. * @param str A <code>char</code> array. * @param offset the index of the first <code>char</code> in subarray to * be inserted. * @param len the number of <code>char</code>s in the subarray to * be inserted. * @return This object * @throws StringIndexOutOfBoundsException if <code>index</code> * is negative or greater than <code>length()</code>, or * <code>offset</code> or <code>len</code> are negative, or * <code>(offset+len)</code> is greater than * <code>str.length</code>. */ public AbstractStringBuilder insert(int index, char str[], int offset, int len) { if ((index < 0) || (index > length())) throw new StringIndexOutOfBoundsException(index); if ((offset < 0) || (len < 0) || (offset > str.length - len)) throw new StringIndexOutOfBoundsException('offset ' + offset + ', len ' + len + ', str.length ' + str.length); int newCount = count + len; if (newCount > value.length) expandCapacity(newCount); System.arraycopy(value, index, value, index + len, count - index); System.arraycopy(str, offset, value, index, len); count = newCount; return this; }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.AbstractStringBuilder.replace(int, int, String)
/** * Replaces the characters in a substring of this sequence * with characters in the specified <code>String</code>. The substring * begins at the specified <code>start</code> and extends to the character * at index <code>end - 1</code> or to the end of the * sequence if no such character exists. First the * characters in the substring are removed and then the specified * <code>String</code> is inserted at <code>start</code>. (This * sequence will be lengthened to accommodate the * specified String if necessary.) * @param start The beginning index, inclusive. * @param end The ending index, exclusive. * @param str String that will replace previous contents. * @return This object. * @throws StringIndexOutOfBoundsException if <code>start</code> * is negative, greater than <code>length()</code>, or * greater than <code>end</code>. */ public AbstractStringBuilder replace(int start, int end, String str) { if (start < 0) throw new StringIndexOutOfBoundsException(start); if (start > count) throw new StringIndexOutOfBoundsException('start > length()'); if (start > end) throw new StringIndexOutOfBoundsException('start > end'); if (end > count) end = count; if (end > count) end = count; int len = str.length(); int newCount = count + len - (end - start); if (newCount > value.length) expandCapacity(newCount); System.arraycopy(value, end, value, start + len, count - end); str.getChars(value, start); count = newCount; return this; }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.AbstractStringBuilder.setCharAt(int, char)
/** * The character at the specified index is set to <code>ch</code>. This * sequence is altered to represent a new character sequence that is * identical to the old character sequence, except that it contains the * character <code>ch</code> at position <code>index</code>. * The index argument must be greater than or equal to * <code>0</code>, and less than the length of this sequence. * @param index the index of the character to modify. * @param ch the new character. * @throws IndexOutOfBoundsException if <code>index</code> is * negative or greater than or equal to <code>length()</code>. */ public void setCharAt(int index, char ch) { if ((index < 0) || (index >= count)) throw new StringIndexOutOfBoundsException(index); value[index] = ch; }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.AbstractStringBuilder.setLength(int)
/** * Sets the length of the character sequence. * The sequence is changed to a new character sequence * whose length is specified by the argument. For every nonnegative * index <i>k</i> less than <code>newLength</code>, the character at * index <i>k</i> in the new character sequence is the same as the * character at index <i>k</i> in the old sequence if <i>k</i> is less * than the length of the old character sequence; otherwise, it is the * null character <code>'\u0000'</code>. * In other words, if the <code>newLength</code> argument is less than * the current length, the length is changed to the specified length. * If the <code>newLength</code> argument is greater than or equal * to the current length, sufficient null characters * (<code>'\u0000'</code>) are appended so that * length becomes the <code>newLength</code> argument. * The <code>newLength</code> argument must be greater than or equal * to <code>0</code>. * @param newLength the new length * @throws IndexOutOfBoundsException if the * <code>newLength</code> argument is negative. */ public void setLength(int newLength) { if (newLength < 0) throw new StringIndexOutOfBoundsException(newLength); if (newLength > value.length) expandCapacity(newLength); if (count < newLength) { for (; count < newLength; count++) value[count] = '\0'; } else { count = newLength; } }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.AbstractStringBuilder.substring(int, int)
/** * Returns a new <code>String</code> that contains a subsequence of * characters currently contained in this sequence. The * substring begins at the specified <code>start</code> and * extends to the character at index <code>end - 1</code>. * @param start The beginning index, inclusive. * @param end The ending index, exclusive. * @return The new string. * @throws StringIndexOutOfBoundsException if <code>start</code> * or <code>end</code> are negative or greater than * <code>length()</code>, or <code>start</code> is * greater than <code>end</code>. */ public String substring(int start, int end) { if (start < 0) throw new StringIndexOutOfBoundsException(start); if (end > count) throw new StringIndexOutOfBoundsException(end); if (start > end) throw new StringIndexOutOfBoundsException(end - start); return new String(value, start, end - start); }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.String.charAt(int)
/** * Returns the <code>char</code> value at the * specified index. An index ranges from <code>0</code> to * <code>length() - 1</code>. The first <code>char</code> value of the sequence * is at index <code>0</code>, the next at index <code>1</code>, * and so on, as for array indexing. * If the <code>char</code> value specified by the index is a * <a href='Character.html#unicode'>surrogate</a>, the surrogate * value is returned. * @param index the index of the <code>char</code> value. * @return the <code>char</code> value at the specified index of this string. * The first <code>char</code> value is at index <code>0</code>. * @exception IndexOutOfBoundsException if the <code>index</code> * argument is negative or not less than the length of this * string. */ public char charAt(int index) { if ((index < 0) || (index >= count)) { throw new StringIndexOutOfBoundsException(index); } return value[index + offset]; }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.String.checkBounds(byte[], int, int)
private static void checkBounds(byte[] bytes, int offset, int length) { if (length < 0) throw new StringIndexOutOfBoundsException(length); if (offset < 0) throw new StringIndexOutOfBoundsException(offset); if (offset > bytes.length - length) throw new StringIndexOutOfBoundsException(offset + length); }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.String.codePointAt(int)
/** * Returns the character (Unicode code point) at the specified * index. The index refers to <code>char</code> values * (Unicode code units) and ranges from <code>0</code> to * {@link #length()}<code> - 1</code>. * If the <code>char</code> value specified at the given index * is in the high-surrogate range, the following index is less * than the length of this <code>String</code>, and the * <code>char</code> value at the following index is in the * low-surrogate range, then the supplementary code point * corresponding to this surrogate pair is returned. Otherwise, * the <code>char</code> value at the given index is returned. * @param index the index to the <code>char</code> values * @return the code point value of the character at the * <code>index</code> * @exception IndexOutOfBoundsException if the <code>index</code> * argument is negative or not less than the length of this * string. * @since 1.5 */ public int codePointAt(int index) { if ((index < 0) || (index >= count)) { throw new StringIndexOutOfBoundsException(index); } return Character.codePointAtImpl(value, offset + index, offset + count); }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.String.codePointBefore(int)
/** * Returns the character (Unicode code point) before the specified * index. The index refers to <code>char</code> values * (Unicode code units) and ranges from <code>1</code> to {@link * CharSequence#length() length}. * If the <code>char</code> value at <code>(index - 1)</code> * is in the low-surrogate range, <code>(index - 2)</code> is not * negative, and the <code>char</code> value at <code>(index - * 2)</code> is in the high-surrogate range, then the * supplementary code point value of the surrogate pair is * returned. If the <code>char</code> value at <code>index - * 1</code> is an unpaired low-surrogate or a high-surrogate, the * surrogate value is returned. * @param index the index following the code point that should be returned * @return the Unicode code point value before the given index. * @exception IndexOutOfBoundsException if the <code>index</code> * argument is less than 1 or greater than the length * of this string. * @since 1.5 */ public int codePointBefore(int index) { int i = index - 1; if ((i < 0) || (i >= count)) { throw new StringIndexOutOfBoundsException(index); } return Character.codePointBeforeImpl(value, offset + index, offset); }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.String.getBytes(int, int, byte, int)
/** * Copies characters from this string into the destination byte * array. Each byte receives the 8 low-order bits of the * corresponding character. The eight high-order bits of each character * are not copied and do not participate in the transfer in any way. * The first character to be copied is at index <code>srcBegin</code>; * the last character to be copied is at index <code>srcEnd-1</code>. * The total number of characters to be copied is * <code>srcEnd-srcBegin</code>. The characters, converted to bytes, * are copied into the subarray of <code>dst</code> starting at index * <code>dstBegin</code> and ending at index: * <blockquote> * dstbegin + (srcEnd-srcBegin) - 1 * </blockquote> * @deprecated This method does not properly convert characters into bytes. * As of JDK 1.1, the preferred way to do this is via the * <code>getBytes()</code> method, which uses the platform's default * charset. * @param srcBegin index of the first character in the string * to copy. * @param srcEnd index after the last character in the string * to copy. * @param dst the destination array. * @param dstBegin the start offset in the destination array. * @exception IndexOutOfBoundsException if any of the following * is true: * <ul><li><code>srcBegin</code> is negative * <li><code>srcBegin</code> is greater than <code>srcEnd</code> * <li><code>srcEnd</code> is greater than the length of this * String * <li><code>dstBegin</code> is negative * <li><code>dstBegin+(srcEnd-srcBegin)</code> is larger than * <code>dst.length</code></ul> */ @Deprecated public void getBytes(int srcBegin, int srcEnd, byte dst[], int dstBegin) { if (srcBegin < 0) { throw new StringIndexOutOfBoundsException(srcBegin); } if (srcEnd > count) { throw new StringIndexOutOfBoundsException(srcEnd); } if (srcBegin > srcEnd) { throw new StringIndexOutOfBoundsException(srcEnd - srcBegin); } int j = dstBegin; int n = offset + srcEnd; int i = offset + srcBegin; char[] val = value; while (i < n) { dst[j++] = (byte) val[i++]; } }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.String.getChars(int, int, char, int)
/** * Copies characters from this string into the destination character * array. * The first character to be copied is at index <code>srcBegin</code>; * the last character to be copied is at index <code>srcEnd-1</code> * (thus the total number of characters to be copied is * <code>srcEnd-srcBegin</code>). The characters are copied into the * subarray of <code>dst</code> starting at index <code>dstBegin</code> * and ending at index: * <blockquote> * dstbegin + (srcEnd-srcBegin) - 1 * </blockquote> * @param srcBegin index of the first character in the string * to copy. * @param srcEnd index after the last character in the string * to copy. * @param dst the destination array. * @param dstBegin the start offset in the destination array. * @exception IndexOutOfBoundsException If any of the following * is true: * <ul><li><code>srcBegin</code> is negative. * <li><code>srcBegin</code> is greater than <code>srcEnd</code> * <li><code>srcEnd</code> is greater than the length of this * string * <li><code>dstBegin</code> is negative * <li><code>dstBegin+(srcEnd-srcBegin)</code> is larger than * <code>dst.length</code></ul> */ public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) { if (srcBegin < 0) { throw new StringIndexOutOfBoundsException(srcBegin); } if (srcEnd > count) { throw new StringIndexOutOfBoundsException(srcEnd); } if (srcBegin > srcEnd) { throw new StringIndexOutOfBoundsException(srcEnd - srcBegin); } System.arraycopy(value, offset + srcBegin, dst, dstBegin, srcEnd - srcBegin); }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.String.substring(int, int)
/** * Returns a new string that is a substring of this string. The * substring begins at the specified <code>beginIndex</code> and * extends to the character at index <code>endIndex - 1</code>. * Thus the length of the substring is <code>endIndex-beginIndex</code>. * Examples: * <blockquote> * 'hamburger'.substring(4, 8) returns 'urge' * 'smiles'.substring(1, 5) returns 'mile' * </blockquote> * @param beginIndex the beginning index, inclusive. * @param endIndex the ending index, exclusive. * @return the specified substring. * @exception IndexOutOfBoundsException if the * <code>beginIndex</code> is negative, or * <code>endIndex</code> is larger than the length of * this <code>String</code> object, or * <code>beginIndex</code> is larger than * <code>endIndex</code>. */ public String substring(int beginIndex, int endIndex) { if (beginIndex < 0) { throw new StringIndexOutOfBoundsException(beginIndex); } if (endIndex > count) { throw new StringIndexOutOfBoundsException(endIndex); } if (beginIndex > endIndex) { throw new StringIndexOutOfBoundsException(endIndex - beginIndex); } return ((beginIndex == 0) && (endIndex == count)) ? this : new String(offset + beginIndex, endIndex - beginIndex, value); }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.StringBuffer.charAt(int)
/** * @throws IndexOutOfBoundsException {@inheritDoc} * @see #length() */ public synchronized char charAt(int index) { if ((index < 0) || (index >= count)) throw new StringIndexOutOfBoundsException(index); return value[index]; }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
java.lang.StringBuffer.setCharAt(int, char)
/** * @throws IndexOutOfBoundsException {@inheritDoc} * @see #length() */ public synchronized void setCharAt(int index, char ch) { if ((index < 0) || (index >= count)) throw new StringIndexOutOfBoundsException(index); value[index] = ch; }
Source: "Java SE Downloads: Java SE 6 JDK Source Code", at: http://www.oracle.com/technetwork/java/javase/downloads/index.html
Comments
Post a Comment