DESKTOP-QT2JO23_20200828-孙中霞

1、问题

1.1

public int indexOf( int ch )

返回指定'字符'在此字符串中第一次出现处的索引。

public int indexOf( int ch , int fromIndex )

返回在'此字符串'中第一次出现指定字符处的索引,从指定的索引开始搜索。

1.2

public int indexOf( String str )

返回指定子'字符串'在此字符串中第一次出现处的索引。

public int indexOf( String str , int fromIndex )

返回指定'子字符串'在'此字符串'中第一次出现处的索引,从指定的索引开始。

        String s = "public/static/void/static/void/main/String";
        int number1 = s.indexOf("static");
        System.out.println(number1);

        //public int indexOf( String str )
        int first = s.indexOf("void");//输出14
        System.out.println(first);

        //public int indexOf( int ch )
        int third =s.indexOf("o");//输出15
        System.out.println(third);

        //public int indexOf( String str )
        int forth=s.indexOf('v');//输出14
        System.out.println(forth);
        

2、解决

总的来说我用代码试了一下,返回字符和字符串没啥区别,最后的输出调用字符的方法也可以得出字符串的的索引,也可用字符串的方法得出字符的索引!但似乎事实并不是这个样子!

但我百度了一下说是Unicode给它了一个名称——基本多文种平面(BMP Basic Multilingual Plane)。基本多文种平面值域和上域都是0000~FFFF,共计65535个码点。并且ASCII中有的字符Unicode中都有,并且对应相同的编码数字,并不是我们简单的认为Unicode编码一个String就可以存下数据。int的21个低位(最低有效位)用于表示Unicode代码点,并且11个高位(最高有效位)必须为零。也就是说,int能表示出char不能表示的增补字符。我们还可以看到,indexOf ( )有一个if { }else { } 语句当超过Unicode的代码补充范围时候,就会调用indexOfSupplementartary()方法。他是处理超过范围的问题的。这里其实我们就可以记住indexOf(int ch)其实是传入的Unicode的代码点,不是传入的真正的字符,而且Java中的代码点是用32为数据表示的,因次是用int而不是String.

3、吐槽

下午那会儿,教室里真的是超级热,汗冒的感觉吼不住了! 我发现教室里和宿舍里的蚊子特别喜欢我,专挑我咬,太难了~~~~~

标签

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1