当前位置:科普知识站>IT科技>

java|charsequence

IT科技 阅读(8.91K)

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java charsequence是什么,让我们一起了解一下?

CharSequence类是java.lang包下的一个接口,此接口对多种不同的对char访问的统一接口,像String、StringBuffer、StringBuilder类都是CharSequence的子接口。

那么CharSequence接口是如何实现的?

java charsequence

CharSequence接口的源码如下:

package java.lang;/** * A <tt>CharSequence</tt> is a readable sequence of <code>char</code> values. This * interface provides uniform, read-only access to many different kinds of * <code>char</code> sequences. * A <code>char</code> value represents a character in the <i>Basic * Multilingual Plane (BMP)</i> or a surrogate. Refer to <a * href="Character.html#unicode">Unicode Character Representation</a> for details. * * <p> This interface does not refine the general contracts of the {@link * java.lang.Object#equals(java.lang.Object) equals} and {@link * java.lang.Object#hashCode() hashCode} methods.  The result of comparing two * objects that implement <tt>CharSequence</tt> is therefore, in general, * undefined.  Each object may be implemented by a different class, and there * is no guarantee that each class will be capable of testing its instances * for equality with those of the other.  It is therefore inappropriate to use * arbitrary <tt>CharSequence</tt> instances as elements in a set or as keys in * a map. </p> * * @author Mike McCloskey * @since 1.4 * @spec JSR-51 */public interface CharSequence {    /**     * Returns the length of this character sequence.  The length is the number     * of 16-bit <code>char</code>s in the sequence.</p>     *     * @return  the number of <code>char</code>s in this sequence     */    int length();    /**     * Returns the <code>char</code> value at the specified index.  An index ranges from zero     * to <tt>length() - 1</tt>.  The first <code>char</code> value of the sequence is at     * index zero, the next at index one, and so on, as for array     * indexing. </p>     *     * <p>If the <code>char</code> value specified by the index is a     * <a href="{@docRoot}/java/lang/Character.html#unicode">surrogate</a>, the surrogate     * value is returned.     *     * @param   index   the index of the <code>char</code> value to be returned     *     * @return  the specified <code>char</code> value     *     * @throws  IndexOutOfBoundsException     *          if the <tt>index</tt> argument is negative or not less than     *          <tt>length()</tt>     */    char charAt(int index);    /**     * Returns a new <code>CharSequence</code> that is a subsequence of this sequence.     * The subsequence starts with the <code>char</code> value at the specified index and     * ends with the <code>char</code> value at index <tt>end - 1</tt>.  The length     * (in <code>char</code>s) of the     * returned sequence is <tt>end - start</tt>, so if <tt>start == end</tt>     * then an empty sequence is returned. </p>     *     * @param   start   the start index, inclusive     * @param   end     the end index, exclusive     *     * @return  the specified subsequence     *     * @throws  IndexOutOfBoundsException     *          if <tt>start</tt> or <tt>end</tt> are negative,     *          if <tt>end</tt> is greater than <tt>length()</tt>,     *          or if <tt>start</tt> is greater than <tt>end</tt>     */    CharSequence subSequence(int start, int end);    /**     * Returns a string containing the characters in this sequence in the same     * order as this sequence.  The length of the string will be the length of     * this sequence. </p>     *     * @return  a string consisting of exactly this sequence of characters     */    public String toString();}

另外CharSequence类是一个描述字符串的一个描述型接口,有三个类实现了该接口,分别为:String、StringBuffer、StringBuilder类,所以说,看到这个类,就直接当做是一个字符串类型就可以了,示例代码如下:

/** * String、Stringbuffer、StringBuilder 三个字符相关的类都实现 *      了CharSequence 类,所以说,以后见到CharSequence描述的就是字符串 */ public class CharSequenceStudy {    public static void main(String[] args) {        CharSequence str = "www.ayit.com";        CharSequence sub = str.subSequence(4,8);        System.out.println(sub);        System.out.println(str.length());    }}

拓展一下:对于抽象类或者接口来说不可以直接使用new的方式创建对象,但是可以直接给它赋值; CharSequence b = "s"; > 。CharSequence b = "s" 是一个类型强转操作,等于CharSequence b = (CharSequence) new String("s")。