CharSequence 是一个 Java 接口,用于表示可读的字符序列。它提供了对字符序列进行只读访问的统一方法。这个接口是许多重要的 Java 类的基础,例如 String、StringBuilder 和 StringBuffer 都实现了这个接口。
通过使用 CharSequence 接口,可以编写更通用的代码,这些代码可以处理多种类型的字符序列,而不仅仅局限于 String 类型。这样可以提高代码的灵活性和复用性。
CharSequence 接口中的方法:
返回字符序列的长度。示例:
CharSequence charSeq = "Hello"; int length = charSeq.length(); System.out.println("Length of the character sequence: " + length);
返回指定索引位置的字符。索引范围是从 0 到 length() - 1。示例:
CharSequence charSeq = "World"; char c = charSeq.charAt(2); System.out.println("Character at index 2: " + c);
返回一个新的CharSequence,它是原字符序列从start索引(包含)到end索引(不包含)之间的部分。示例:
CharSequence charSeq = "Java Programming"; CharSequence subSeq = charSeq.subSequence(5, 15); System.out.println("Sub - sequence: " + subSeq);
String 类是不可变的,一旦创建,其内容不能被改变。它是最常用的表示字符序列的类,并且由于实现了CharSequence 接口,可以在任何需要 CharSequence 的地方使用 String。
示例:
String str = "This is a string"; // 使用CharSequence接口的方法 int len = str.length(); char ch = str.charAt(3); CharSequence sub = str.subSequence(5, 10); System.out.println("Length: " + len); System.out.println("Character at index 3: " + ch); System.out.println("Sub - sequence: " + sub);
StringBuilder 类是可变的字符序列。它提供了修改字符序列的方法,如 append()、insert() 和 delete() 等,并且实现了 CharSequence 接口。
示例:
StringBuilder sb = new StringBuilder("Initial content"); // 使用CharSequence接口的方法 int length = sb.length(); char character = sb.charAt(0); CharSequence subSequence = sb.subSequence(0, 9); System.out.println("Length of StringBuilder: " + length); System.out.println("First character: " + character); System.out.println("Sub - sequence: " + subSequence); // 使用StringBuilder特有的方法 sb.append(" - appended text"); System.out.println("After append: " + sb);
StringBuffer 类与 StringBuilder 类似,也是可变的字符序列,但它的方法是线程安全的。在多线程环境下,如果需要对字符序列进行修改操作,可以考虑使用 StringBuffer。它同样实现了 CharSequence 接口。
示例:
StringBuffer sbuf = new StringBuffer("Thread - safe text"); // 使用CharSequence接口的方法 int len = sbuf.length(); char ch = sbuf.charAt(0); CharSequence sub = sbuf.subSequence(0, 10); System.out.println("Length of StringBuffer: " + len); System.out.println("First character: " + ch); System.out.println("Sub - sequence: " + sub); // StringBuffer特有的线程安全的操作 synchronized(sbuf) { sbuf.append(" - appended safely"); } System.out.println("After append: " + sbuf);