int len) {
char ta[] = value;
int to = toffset;
char pa[] = other.value;
int po = ooffset;
// Note: toffset, ooffset, or len might be near -1>>>1.
if ((ooffset < 0) || (toffset < 0)
|| (toffset > (long)value.length - len)
|| (ooffset > (long)other.value.length - len)) {
return false;
}
while (len-- > 0) {
if (ta[to++] != pa[po++]) {
return false;
}
}
return true;
}
这个方法的重载方法在第六篇里进行了说明。不一样的地方就是缺少了个布尔值参数,不再对大小写是否敏感进行判断,这个方法就是判断字符串中的某一部分字符是否相等,而且大小写完全敏感。
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.
if ((toffset < 0) || (toffset > value.length - pc)) {
return false;
}
while (--pc >= 0) {
if (ta[to++] != pa[po++]) {
return false;
}
}
return true;
}
这个方法很重要而且很常用,是判断某个字符串是否以另外一个字符串为开头。这个方法有两个参数,第一个是要判断的前缀字符串,第二个是本字符串的开始下标。
首先判断本字符串的开始下标是否小于0以及本字符串开始下标是否大于两个字符串的长度之差,如果判断失败则直接返回false。
然后进入循环,从本字符串的起始下标开始,判断本字符串和参数字符串每一个元素是否相等,如果有一个字符不相等直接返回false,循环的次数就是参数字符串的长度。
public boolean startsWith(String prefix) {
return startsWith(prefix, 0);
}
这个方法是上面方法的重载方法,将本字符串起始下标变为0,也就是从本字符串的第0个元素开始匹配。
public boolean endsWith(String suffix) {
return startsWith(suffix, value.length - suffix.value.length);
}
这个方法同样很重要,是判断本字符串是否以参数字符串为结尾,实现方式是调用startsWith方法,参数是目标字符串,起始下标是本字符串长度减去参数字符串的长度,也就是从这个差额处开始判断,所以判断的是本字符串结尾是否和参数字符串相等。