我想重写indexof实现查找不到字符放回的不是-1而是自己定义的返回值。
另外,我想问一下广大网友,这么找到这些方法,api我看不太懂,在eclipse 直接进入源码也看不懂。
你自己写一个方法传入要处理的字符串和要查找的字符,这样你就可以实现自己想要的返回值了,String是final类不能被继承无法重写。这些方法如果不想看api和源码的话可以看一些网上的教程比如菜鸟教程,里面会有一些常用的方法解释
源码
public int indexOf(int ch, int fromIndex) {
final int max = length();
if (fromIndex < 0) {
fromIndex = 0;
} else if (fromIndex >= max) {
// Note: fromIndex might be near -1>>>1.
return -1;
}
if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
// handle most cases here (ch is a BMP code point or a
// negative value (invalid code point))
for (int i = fromIndex; i < max; i++) {
if (charAt(i) == ch) {
return i;
}
}
return -1;
} else {
return indexOfSupplementary(ch, fromIndex);
}
}
/**
* Handles (rare) calls of indexOf with a supplementary character.
*/
private int indexOfSupplementary(int ch, int fromIndex) {
if (Character.isValidCodePoint(ch)) {
final char hi = Character.highSurrogate(ch);
final char lo = Character.lowSurrogate(ch);
final int max = length() - 1;
for (int i = fromIndex; i < max; i++) {
if (charAt(i) == hi && charAt(i + 1) == lo) {
return i;
}
}
}
return -1;
}