public final class String
implements java.io.Serializable, Comparable<String>, CharSequence{
private final char value[];
//转换为字符数组
public char[] toCharArray(){
//Cannot use Arrays.copyOf because of class initialization order issues
char result[] new char[value.length];
System.arraycopy(value, 0, result, 0, value.length);
return result;
}
- startsWith(String, int)
startsWith(String, int)
判断字符是否以prefix开始
"abcde".startsWith("") ==> 返回true
代码注释的那块代码在次体现出了JDK的严紧,作为coder的我表示汗颜
//Note: toffset might be near -1 >>> 1 也就是 Integer.MAX_VALUE
boolean result = (toffset > value.length - pc);
//平时我作的判断 在toffset 和 pc 非常大的时候 极有可能发生整数溢出啊!!!!!!!!!
boolean result2 = (toffset + pc) > value.length;
public boolean startsWith(String prefix, int toffset){
char ta[] = value;
int to = toffset;
char pa[] = prefix.value;
int po = 0;
int pc = prefix.value.length;
//Note: toffset might be near -1 >>> 1 也就是 Integer.MAX_VALUE
if((toffset < 0) || (toffset > value.length - pc)){
return false;
}
while(--pc >= 0){
if(ta[to++] != pa[po++]){
return false;
}
}
return true;
}
startsWith(String)
public boolean startsWith(String prefix){
return startsWith(prefix, 0);
}
endsWith(String)
判断字符是否以suffix结尾
“abcde”.endsWith("") ==> 返回true
public boolean endsWith(String suffix){
return startsWith(suffix, value.length - suffix.value.length);
}