涛哥,好问题,哈哈哈!
s1.substring(1,4) 是截取字符串“gdh@qq.com”,结果gh@q
05.System.out.println(s1.indexOf("@")); 这个结果是获取@位置是3,那为什么呢?因为他是从s1("gdh@qq.com")里面获取的,而不是从s1.substring(1,4)这个截取的值(即gh@q)里面取的,所以结果不是2;
同理,下面那个s1.substring(2,6)取的值是h@qq.c ,那08.System.out.println(s1.lastIndexOf("@"));结果还是3呢,因为他获取的值是从s1(“gdh@qq.com”)里面取的,而不是从h@qq.c里面取,所以还是3,不是2;
那为什么会这样呢,因为,每次截取的字符串并没有赋值,意思是没有覆盖了原来的s1,所以,整个过程s1的值都没变,都是字符串“gdh@qq.com”;
如果每次将截取的值赋值给s1, 即s1 =s1.substring(1,4);或s1 =s1.substring(2,6);,像这样的话,结果就是楼主所说的情况了;
|