A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

MeryStyle 来自手机 中级黑马 2014-8-24 06:05:41
21#
将操作后的结果保存到一个 String类型的字符串中,然后再对这个字符串进行操作会得到你想要的答案。因为对原字符的操作并不影响它自身,而是将其结果保存到其它变量,这样也起到了保护原字符串的作用。
回复 使用道具 举报
直接上代码
String s1 = "gdh@qq.com";
System.out.println(s1.substring(1,4).indexOf("@"));
System.out.println(s1.substring(2,6).lastIndexOf("@"));
回复 使用道具 举报
夜半风 发表于 2014-8-24 20:51
直接上代码
String s1 = "gdh@qq.com";
System.out.println(s1.substring(1,4).indexOf("@"));

结果是
2
1
回复 使用道具 举报
s1又没有重新赋值没有任何修改
回复 使用道具 举报
这位同学,我想说你可能把subString()这个方法理解错了,s1.subString()并没有改变s1这个字符串。其实这样写就是你想要的答案:2 了    如下:s2=s1.subString(2,6);System.out.println(s2.lastIndexof('@'))。
回复 使用道具 举报
String是有返回值的每次操作都是产生新的字符串,老的字符串是不变的呀
回复 使用道具 举报
S1从一开始被赋值:String s1 = "gdh@qq.com"  之后从来都没变过,之后都是打印的截取的子串。楼主可以看一下相关的API文档。  既然S1一直都是“gdh@qq.com”,那么最后出现@的位置当然是角标3咯。:P
回复 使用道具 举报
好长时间没来论坛了,论坛变得越来越人性化了!
回复 使用道具 举报
首先解释一下substring(),返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。调用substring方法后,原字符串并不改变。
另外就是lastIndexOf()返回指定子字符串在此字符串中最右边出现处的索引,从后面开始查找,但是返回的还是该字符串的索引,而不是从后面开始数!所以调用indexOf()和lastIndexOf()的返回值是相同的。
回复 使用道具 举报
给我点分好不?
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马