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);