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

📄 string.java

📁 已经移植好的java虚拟机
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        }        if (srcEnd > count) {            throw new StringIndexOutOfBoundsException(srcEnd);        }        if (srcBegin > srcEnd) {            throw new StringIndexOutOfBoundsException(srcEnd - srcBegin);        }        System.arraycopy(value, offset + srcBegin, dst, dstBegin,                         srcEnd - srcBegin);    }    /**     * Convert this <code>String</code> into bytes according to the specified     * character encoding, storing the result into a new byte array.     *     * @param  enc  A character-encoding name     * @return      The resultant byte array     *     * @exception  UnsupportedEncodingException     *             If the named encoding is not supported     * @since      JDK1.1     */    public byte[] getBytes(String enc) throws UnsupportedEncodingException {        return Helper.charToByteArray(value, offset, count, enc);    }    /**     * Convert this <code>String</code> into bytes according to the platform's     * default character encoding, storing the result into a new byte array.     *     * @return  the resultant byte array.     * @since   JDK1.1     */    public byte[] getBytes() {        return Helper.charToByteArray(value, offset, count);    }    /**     * Compares this string to the specified object.     * The result is <code>true</code> if and only if the argument is not     * <code>null</code> and is a <code>String</code> object that represents     * the same sequence of characters as this object.     *     * @param   anObject   the object to compare this <code>String</code>     *                     against.     * @return  <code>true</code> if the <code>String </code>are equal;     *          <code>false</code> otherwise.     * @see     java.lang.String#compareTo(java.lang.String)     */    public native boolean equals(Object anObject); /************  * public boolean equals(Object anObject) {  *     if (this == anObject) {  *         return true;  *     }  *     if (anObject instanceof String) {  *         String anotherString = (String)anObject;  *         int n = count;  *         if (n == anotherString.count) {  *             char v1[] = value;  *             char v2[] = anotherString.value;  *             int i = offset;  *             int j = anotherString.offset;  *             while (n-- != 0) {  *                 if (v1[i++] != v2[j++]) {  *                     return false;  *                 }  *             }  *             return true;  *         }  *     }  *     return false;  * }  ********/    /**     * Compares two strings lexicographically.     * The comparison is based on the Unicode value of each character in     * the strings. The character sequence represented by this     * <code>String</code> object is compared lexicographically to the     * character sequence represented by the argument string. The result is     * a negative integer if this <code>String</code> object     * lexicographically precedes the argument string. The result is a     * positive integer if this <code>String</code> object lexicographically     * follows the argument string. The result is zero if the strings     * are equal; <code>compareTo</code> returns <code>0</code> exactly when     * the {@link #equals(Object)} method would return <code>true</code>.     * <p>     * This is the definition of lexicographic ordering. If two strings are     * different, then either they have different characters at some index     * that is a valid index for both strings, or their lengths are different,     * or both. If they have different characters at one or more index     * positions, let <i>k</i> be the smallest such index; then the string     * whose character at position <i>k</i> has the smaller value, as     * determined by using the < operator, lexicographically precedes the     * other string. In this case, <code>compareTo</code> returns the     * difference of the two character values at position <code>k</code> in     * the two string -- that is, the value:     * <blockquote><pre>     * this.charAt(k)-anotherString.charAt(k)     * </pre></blockquote>     * If there is no index position at which they differ, then the shorter     * string lexicographically precedes the longer string. In this case,     * <code>compareTo</code> returns the difference of the lengths of the     * strings -- that is, the value:     * <blockquote><pre>     * this.length()-anotherString.length()     * </pre></blockquote>     *     * @param   anotherString   the <code>String</code> to be compared.     * @return  the value <code>0</code> if the argument string is equal to     *          this string; a value less than <code>0</code> if this string     *          is lexicographically less than the string argument; and a     *          value greater than <code>0</code> if this string is     *          lexicographically greater than the string argument.     * @exception java.lang.NullPointerException if <code>anotherString</code>     *          is <code>null</code>.     */    public int compareTo(String anotherString) {        int len1 = count;        int len2 = anotherString.count;        int n = Math.min(len1, len2);        char v1[] = value;        char v2[] = anotherString.value;        int i = offset;        int j = anotherString.offset;        if (i == j) {            int k = i;            int lim = n + i;            while (k < lim) {                char c1 = v1[k];                char c2 = v2[k];                if (c1 != c2) {                    return c1 - c2;                }                k++;           }        } else {            while (n-- != 0) {                char c1 = v1[i++];                char c2 = v2[j++];                if (c1 != c2) {                    return c1 - c2;                }            }        }        return len1 - len2;    }    /**     * Tests if two string regions are equal.     * <p>     * A substring of this <tt>String</tt> object is compared to a substring     * of the argument <tt>other</tt>. The result is <tt>true</tt> if these     * substrings represent character sequences that are the same, ignoring     * case if and only if <tt>ignoreCase</tt> is true. The substring of     * this <tt>String</tt> object to be compared begins at index     * <tt>toffset</tt> and has length <tt>len</tt>. The substring of     * <tt>other</tt> to be compared begins at index <tt>ooffset</tt> and     * has length <tt>len</tt>. The result is <tt>false</tt> if and only if     * at least one of the following is true:     * <ul><li><tt>toffset</tt> is negative.     * <li><tt>ooffset</tt> is negative.     * <li><tt>toffset+len</tt> is greater than the length of this     * <tt>String</tt> object.     * <li><tt>ooffset+len</tt> is greater than the length of the other     * argument.     * <li>There is some nonnegative integer <i>k</i> less than <tt>len</tt>     * such that:     * <blockquote><pre>     * this.charAt(toffset+k) != other.charAt(ooffset+k)     * </pre></blockquote>     * <li><tt>ignoreCase</tt> is <tt>true</tt> and there is some nonnegative     * integer <i>k</i> less than <tt>len</tt> such that:     * <blockquote><pre>     * Character.toLowerCase(this.charAt(toffset+k)) !=               Character.toLowerCase(other.charAt(ooffset+k))     * </pre></blockquote>     * and:     * <blockquote><pre>     * Character.toUpperCase(this.charAt(toffset+k)) !=     *         Character.toUpperCase(other.charAt(ooffset+k))     * </pre></blockquote>     * </ul>     *     * @param   ignoreCase   if <code>true</code>, ignore case when comparing     *                       characters.     * @param   toffset      the starting offset of the subregion in this     *                       string.     * @param   other        the string argument.     * @param   ooffset      the starting offset of the subregion in the string     *                       argument.     * @param   len          the number of characters to compare.     * @return  <code>true</code> if the specified subregion of this string     *          matches the specified subregion of the string argument;     *          <code>false</code> otherwise. Whether the matching is exact     *          or case insensitive depends on the <code>ignoreCase</code>     *          argument.     */    public boolean regionMatches(boolean ignoreCase,                                         int toffset,                                       String other, int ooffset, int len) {        char ta[] = value;        int to = offset + toffset;        int tlim = offset + count;        char pa[] = other.value;        int po = other.offset + ooffset;        // Note: toffset, ooffset, or len might be near -1>>>1.        if ((ooffset < 0) || (toffset < 0) || (toffset > (long)count - len) ||            (ooffset > (long)other.count - len)) {            return false;        }        while (len-- > 0) {            char c1 = ta[to++];            char c2 = pa[po++];            if (c1 == c2)                continue;            if (ignoreCase) {                // If characters don't match but case may be ignored,                // try converting both characters to uppercase.                // If the results match, then the comparison scan should                // continue.                char u1 = Character.toUpperCase(c1);                char u2 = Character.toUpperCase(c2);                if (u1 == u2)                    continue;                // Unfortunately, conversion to uppercase does not work properly                // for the Georgian alphabet, which has strange rules about case                // conversion.  So we need to make one last check before                // exiting.                if (Character.toLowerCase(u1) == Character.toLowerCase(u2))                    continue;            }            return false;        }        return true;    }    /**     * Tests if this string starts with the specified prefix beginning     * a specified index.     *     * @param   prefix    the prefix.     * @param   toffset   where to begin looking in the string.     * @return  <code>true</code> if the character sequence represented by the     *          argument is a prefix of the substring of this object starting     *          at index <code>toffset</code>; <code>false</code> otherwise.     *          The result is <code>false</code> if <code>toffset</code> is     *          negative or greater than the length of this     *          <code>String</code> object; otherwise the result is the same     *          as the result of the expression     *          <pre>     *          this.subString(toffset).startsWith(prefix)     *          </pre>     * @exception java.lang.NullPointerException if <code>prefix</code> is     *          <code>null</code>.     */    public boolean startsWith(String prefix, int toffset) {        char ta[] = value;        int to = offset + toffset;        int tlim = offset + count;        char pa[] = prefix.value;        int po = prefix.offset;        int pc = prefix.count;        // Note: toffset might be near -1>>>1.        if ((toffset < 0) || (toffset > count - pc)) {            return false;        }        while (--pc >= 0) {            if (ta[to++] != pa[po++]) {                return false;            }        }        return true;    }    /**     * Tests if this string starts with the specified prefix.     *     * @param   prefix   the prefix.     * @return  <code>true</code> if the character sequence represented by the     *          argument is a prefix of the character sequence represented by     *          this string; <code>false</code> otherwise.     *          Note also that <code>true</code> will be returned if the     *          argument is an empty string or is equal to this     *          <code>String</code> object as determined by the     *          {@link #equals(Object)} method.     * @exception java.lang.NullPointerException if <code>prefix</code> is     *          <code>null</code>.     * @since   JDK1. 0     */    public boolean startsWith(String prefix) {        return startsWith(prefix, 0);    }    /**     * Tests if this string ends with the specified suffix.     *     * @param   suffix   the suffix.     * @return  <code>true</code> if the character sequence represented by the     *          argument is a suffix of the character sequence represented by     *          this object; <code>false</code> otherwise. Note that the     *          result will be <code>true</code> if the argument is the     *          empty string or is equal to this <code>String</code> object     *          as determined by the {@link #equals(Object)} method.     * @exception java.lang.NullPointerException if <code>suffix</code> is     *          <code>null</code>.     */    public boolean endsWith(String suffix) {        return startsWith(suffix, count - suffix.count);    }    /**     * Returns a hashcode for this string. The hashcode for a     * <code>String</code> object is computed as

⌨️ 快捷键说明

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