1. 程式人生 > >JavaSE8基礎 String indexOf 正向 從指定索引值開始查找 字符在字符串中第一次出現的位置

JavaSE8基礎 String indexOf 正向 從指定索引值開始查找 字符在字符串中第一次出現的位置

基礎 rgs mos ati demo com 優秀 main length



os :windows7 x64
jdk:jdk-8u131-windows-x64
ide:Eclipse Oxygen Release (4.7.0)


code:

package jizuiku.t00;

public class Demo4 {
	public static void main(String[] args) {
		
		//     索引值      0123
		String str = "abc01234543210cba";
		char ch = ‘0‘;
		System.out.println(str.indexOf(ch,3));//包括索引值為3的字符
		
		//那樣是指定索引值大於字符串長度呢?
		System.out.println(str.indexOf(ch,20));//返回-1,看了源代碼懂了
	}
}


result:

技術分享

scoureCode:

    public int indexOf(int ch, int fromIndex) {
        final int max = value.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))
            final char[] value = this.value;
            for (int i = fromIndex; i < max; i++) {
                if (value[i] == ch) {
                    return i;
                }
            }
            return -1;
        } else {
            return indexOfSupplementary(ch, fromIndex);
        }
    }


Java優秀,值得學習。
學習資源:API手冊+Java源碼。

JavaSE8基礎 String indexOf 正向 從指定索引值開始查找 字符在字符串中第一次出現的位置