public interface CharSequence
字符序列接口, 实现此接口的非抽象类有String, StringBuffer, StringBuilder. 从结果来讲, 该接口的主要作用就是使得三者之间在进行一部分操作(比如查找, 比较)时变得容易.
主要是char value和codepoint value的意义及区别, surrogate code point的含义. 简单地说char代表一个2字节的字符, codepoint才代表一个完整的字符(因为少数字符是4字节的, 比如emoji), 具体请参考其他人的文章.
char charAt(int)
int length()
CharSequence subSequence(int, int)
String toString() //其实重定义toString没有用, 因为Object类已经实现了这个方法, 就当做这里是一种强调吧
java8新增2个default方法
public default IntStream chars()
public default IntStream codePoints()
分别转换为以char和codepoint为单位的java stream.注意转换后为int
类型的unicode编码.
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
这是一个final class.
其中, Serializable 是空接口; Comparable<String>函数式接口, 其方法为int compareTo(T to)
.
1.以下几个容易理解(6个)
String()
String(byte[])
String(char[])
String(String)
String(StringBuilder)
String(StringBuffer)
2.从数组中截取字符(2个)
String(byte bytes[], int offset, int length)
String(char value[], int offset, int count)
3.从非Unicode编码的字节流中截取字符串, 最后一个参数为编码类型(4个)
String(byte[], String)
String(byte[], Charset)
String(byte[] bytes, int offset, int length, String charsetName)
String(byte[] bytes, int offset, int length, Charset charset)
4.从int
类型的codepoint数组转化为String
String(int[] codePoints, int offset, int count)
1.生成新String, 实际是调用了构造函数String(char[], int, int)
String copyValueOf(char[])
String copyValueOf(char[], int, int)
String valueOf(char[])
String valueOf(char[], int, int)
2.format, 类似于sprintf
String format(String, Object...)
String format(Locale, String, Object...)
String join(CharSequence, CharSequence...) //或者是数组CharSequence[]
String join(CharSequence, Iterable<? extends CharSequence)
4.valueOf转换, 实际是调用了Integer.toString()
等方法
String valueOf(char)
String valueOf(double)
String valueOf(float)
String valueOf(int)
String valueOf(Object obj) //=>obj.toString()
String valueOf(long)
(除非特别说明, 否则该方法不支持正则)
1.常用, 略
char charAt(int)
boolean isEmpty()
boolean equals(Object) //override
boolean equalsIgnoreCase(String)
int indexOf(int ch) //=> indexOf(ch, 0), *用int表示ch可能是因为考虑到了codepoint吧
int indexOf(int ch, int fromIndex)
int indexOf(String str) //=>indexOf(str, 0)
int indexOf(String str, int fromIndex)
int lastIndexOf(int)
int lastIndexOf(int, int)
int lastIndexOf(String)
int lastIndexOf(String, int)
int length()
String concat(String)
String trim()
boolean startWith(String prefix) //=>startsWith(prefix, 0)
boolean startsWith(Stirng prefix, int offset)
boolean endsWith(String) //note: no overloads
int hashCode() //override Object#hashCode
3.compareTo, 注意其返回值的含义:
(1) this.charAt(k)-anotherString.charAt(k)
(2) this.length()-anotherString.length()
int CompareTo(String)
int CompareToIgnoreCase(String)
4.*codepoint相关, 这里还是不太明白
//这两个见CharSequence接口说明
IntStream chars()
IntStream codePoints()
int codePointAt(int index)
int codePointBefore(int)
int codePointCount(int beginIndex, int endIndex)
int offsetByCodePoints(int index, int codePointOffset)
StringBuffer
等类型直接比较replace()
, 未列出, 见10.)boolean contains(CharSequence)
boolean contentEquals(CharSequence)
6.get/set/to
(String是常量字符串当然没有set...)
byte[] getBytes()
byte[] getBytes(String) //设置编码
byte[] getBytes(Charset)
void getChars(int srcBegin, int srcEnd, char[] dst[], int dstBegin)
char[] toCharArray()
String toLowerCase()
String toLowerCase(Locale) //设置Locale, 使用其他语言的大小写转换规则
String toUpperCase()
String toUpperCase(Locale)
7.intern
native String intern() //*可能是从字符串池中寻找是否有相同的字符串然后修改引用指向该字符串
8.正则表达式相关, 可以从参数名确定
(还有replaceAll()
和replaceFirst()
, 未列出, 见10.)
boolean matches(String)
String[] split(String)
String[] split(String regex, int limit) //最多切分limit次
9.*不太理解...
boolean regionMatches(boolean, int, String, int, int)
boolean regionMatches(int, Stirng, int, int)
String replace(char, char)
String replace(CharSequence, CharSequence)
String replaceAll(String, String) //支持正则
String replaceFirst(String, String) //支持正则
11.substring
条件: 0<=beginIndex<=endIndex<=length, 注意和JavaScript或python的类似函数区分
CharSequence subSequence(int, int) //只是返回值不同
String substring(int beginIndex, int endIndex)
String substring(int beginIndex) //=>substring(beginIndex, this.length() - beginindex)
Java8 API学习2 - java.lang.CharSequence, java.lang.String
原文:https://www.cnblogs.com/jpfss/p/11009992.html