⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 string.java

📁 已经移植好的java虚拟机
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
     * <blockquote><pre>     * s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]     * </pre></blockquote>     * using <code>int</code> arithmetic, where <code>s[i]</code> is the     * <i>i</i>th character of the string, <code>n</code> is the length of     * the string, and <code>^</code> indicates exponentiation.     * (The hash value of the empty string is zero.)     *     * @return  a hash code value for this object.     */    public int hashCode() {        int h = 0;        int off = offset;        char val[] = value;        int len = count;        for (int i = 0; i < len; i++) {            h = 31*h + val[off++];        }        return h;    }    /**     * Returns the index within this string of the first occurrence of the     * specified character. If a character with value <code>ch</code> occurs     * in the character sequence represented by this <code>String</code>     * object, then the index of the first such occurrence is returned --     * that is, the smallest value <i>k</i> such that:     * <blockquote><pre>     * this.charAt(<i>k</i>) == ch     * </pre></blockquote>     * is <code>true</code>. If no such character occurs in this string,     * then <code>-1</code> is returned.     *     * @param   ch   a character.     * @return  the index of the first occurrence of the character in the     *          character sequence represented by this object, or     *          <code>-1</code> if the character does not occur.     */    public native int indexOf(int ch); /******  * public int indexOf(int ch) {  *     return indexOf(ch, 0);  * }  ******/    /**     * Returns the index within this string of the first occurrence of the     * specified character, starting the search at the specified index.     * <p>     * If a character with value <code>ch</code> occurs in the character     * sequence represented by this <code>String</code> object at an index     * no smaller than <code>fromIndex</code>, then the index of the first     * such occurrence is returned--that is, the smallest value <i>k</i>     * such that:     * <blockquote><pre>     * (this.charAt(<i>k</i>) == ch) && (<i>k</i> >= fromIndex)     * </pre></blockquote>     * is true. If no such character occurs in this string at or after     * position <code>fromIndex</code>, then <code>-1</code> is returned.     * <p>     * There is no restriction on the value of <code>fromIndex</code>. If it     * is negative, it has the same effect as if it were zero: this entire     * string may be searched. If it is greater than the length of this     * string, it has the same effect as if it were equal to the length of     * this string: <code>-1</code> is returned.     *     * @param   ch          a character.     * @param   fromIndex   the index to start the search from.     * @return  the index of the first occurrence of the character in the     *          character sequence represented by this object that is greater     *          than or equal to <code>fromIndex</code>, or <code>-1</code>     *          if the character does not occur.     */    public native int indexOf(int ch, int fromIndex);/************ *  public int indexOf(int ch, int fromIndex) { *      int max = offset + count; *      char v[] = value; * *      if (fromIndex < 0) { *          fromIndex = 0; *      } else if (fromIndex >= count) { *          // Note: fromIndex might be near -1>>>1. *          return -1; *      } *      for (int i = offset + fromIndex ; i < max ; i++) { *          if (v[i] == ch) { *              return i - offset; *          } *      } *      return -1; *  } ******/    /**     * Returns the index within this string of the last occurrence of the     * specified character. That is, the index returned is the largest     * value <i>k</i> such that:     * <blockquote><pre>     * this.charAt(<i>k</i>) == ch     * </pre></blockquote>     * is true.     * The String is searched backwards starting at the last character.     *     * @param   ch   a character.     * @return  the index of the last occurrence of the character in the     *          character sequence represented by this object, or     *          <code>-1</code> if the character does not occur.     */    public int lastIndexOf(int ch) {        return lastIndexOf(ch, count - 1);    }    /**     * Returns the index within this string of the last occurrence of the     * specified character, searching backward starting at the specified     * index. That is, the index returned is the largest value <i>k</i>     * such that:     * <blockquote><pre>     * this.charAt(k) == ch) && (k <= fromIndex)     * </pre></blockquote>     * is true.     *     * @param   ch          a character.     * @param   fromIndex   the index to start the search from. There is no     *          restriction on the value of <code>fromIndex</code>. If it is     *          greater than or equal to the length of this string, it has     *          the same effect as if it were equal to one less than the     *          length of this string: this entire string may be searched.     *          If it is negative, it has the same effect as if it were -1:     *          -1 is returned.     * @return  the index of the last occurrence of the character in the     *          character sequence represented by this object that is less     *          than or equal to <code>fromIndex</code>, or <code>-1</code>     *          if the character does not occur before that point.     */    public int lastIndexOf(int ch, int fromIndex) {        int min = offset;        char v[] = value;        for (int i = offset + ((fromIndex >= count) ? count - 1 : fromIndex) ; i >= min ; i--) {            if (v[i] == ch) {                return i - offset;            }        }        return -1;    }    /**     * Returns the index within this string of the first occurrence of the     * specified substring. The integer returned is the smallest value     * <i>k</i> such that:     * <blockquote><pre>     * this.startsWith(str, <i>k</i>)     * </pre></blockquote>     * is <code>true</code>.     *     * @param   str   any string.     * @return  if the string argument occurs as a substring within this     *          object, then the index of the first character of the first     *          such substring is returned; if it does not occur as a     *          substring, <code>-1</code> is returned.     * @exception java.lang.NullPointerException if <code>str</code> is     *          <code>null</code>.     */    public int indexOf(String str) {        return indexOf(str, 0);    }    /**     * Returns the index within this string of the first occurrence of the     * specified substring, starting at the specified index. The integer     * returned is the smallest value <i>k</i> such that:     * <blockquote><pre>     * this.startsWith(str, <i>k</i>) && (<i>k</i> >= fromIndex)     * </pre></blockquote>     * is <code>true</code>.     * <p>     * There is no restriction on the value of <code>fromIndex</code>. If     * it is negative, it has the same effect as if it were zero: this entire     * string may be searched. If it is greater than the length of this     * string, it has the same effect as if it were equal to the length of     * this string: <code>-1</code> is returned.     *     * @param   str         the substring to search for.     * @param   fromIndex   the index to start the search from.     * @return  If the string argument occurs as a substring within this     *          object at a starting index no smaller than     *          <code>fromIndex</code>, then the index of the first character     *          of the first such substring is returned. If it does not occur     *          as a substring starting at <code>fromIndex</code> or beyond,     *          <code>-1</code> is returned.     * @exception java.lang.NullPointerException if <code>str</code> is     *          <code>null</code>     */    public int indexOf(String str, int fromIndex) {        char v1[] = value;        char v2[] = str.value;        int max = offset + (count - str.count);        if (fromIndex >= count) {            if (count == 0 && fromIndex == 0 && str.count == 0) {                /* There is an empty string at index 0 in an empty string. */                return 0;            }            /* Note: fromIndex might be near -1>>>1 */            return -1;        }        if (fromIndex < 0) {            fromIndex = 0;        }        if (str.count == 0) {            return fromIndex;        }        int strOffset = str.offset;        char first  = v2[strOffset];        int i = offset + fromIndex;    startSearchForFirstChar:        while (true) {            /* Look for first character. */            while (i <= max && v1[i] != first) {                i++;            }            if (i > max) {                return -1;            }            /* Found first character, now look at the rest of v2 */            int j = i + 1;            int end = j + str.count - 1;            int k = strOffset + 1;            while (j < end) {                if (v1[j++] != v2[k++]) {                    i++;                    /* Look for str's first char again. */                    continue startSearchForFirstChar;                }            }            return i - offset;  /* Found whole string. */        }    }    /**     * Returns a new 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. <p>     * Examples:     * <blockquote><pre>     * "unhappy".substring(2) returns "happy"     * "Harbison".substring(3) returns "bison"     * "emptiness".substring(9) returns "" (an empty string)     * </pre></blockquote>     *     * @param      beginIndex   the beginning index, inclusive.     * @return     the specified substring.     * @exception  IndexOutOfBoundsException  if     *             <code>beginIndex</code> is negative or larger than the     *             length of this <code>String</code> object.     */    public String substring(int beginIndex) {        return substring(beginIndex, count);    }    /**     * 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>.     * <p>     * Examples:     * <blockquote><pre>     * "hamburger".substring(4, 8) returns "urge"     * "smiles".substring(1, 5) returns "mile"     * </pre></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);    }    /**     * Concatenates the specified string to the end of this string.     * <p>     * If the length of the argument string is <code>0</code>, then this     * <code>String</code> object is returned. Otherwise, a new     * <code>String</code> object is created, representing a character     * sequence that is the concatenation of the character sequence     * represented by this <code>String</code> object and the character     * sequence represented by the argument string.<p>     * Examples:     * <blockquote><pre>     * "cares".concat("s") returns "caress"     * "to".concat("get").concat("her") returns "together"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -