黑马程序员技术交流社区
标题:
关于StringBuilder的一个问题
[打印本页]
作者:
张先龙
时间:
2013-4-13 12:28
标题:
关于StringBuilder的一个问题
本帖最后由 张先龙 于 2013-4-13 19:22 编辑
public class SbTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="三四五六";
StringBuilder sb=new StringBuilder(str);
int len=sb.length();
sb.insert(len-1, "拾"); //1
System.out.println(sb.toString());
sb.insert(len-2, "佰"); //2
System.out.println(sb.toString());
sb.insert(len-3, "仟"); //3
System.out.println(sb.toString());
}
}
/*对应1、2、3的结果如下
三四五拾六
三四佰五拾六
三仟四佰五拾六
为什么2不是在“五”的后面插入“佰”呢,sb的长度不是已经改变了吗?
3也是。求解
*/
作者:
王洪宇
时间:
2013-4-13 16:59
len一直等于4,sb的长度改变,你没有重新计算len值。
作者:
CrazyProgram
时间:
2013-4-13 18:45
明显len的长度一直没变的为4,当你sb.insert(len-1, "拾");的时候其实就是在3的角标处加的
sb.insert(len-2, "佰"); 在角标2的位置加的
sb.insert(len-3, "仟");在角标1的位置
所以咯,很清楚了
作者:
奋斗2013
时间:
2013-4-13 18:57
int len=sb.length(); 只计算了一次sb的长度为4.之后虽然用insert()方法插入了字符串,
但之后没有重新调用int len=sb.length();计算。所以len=4;没变。就出现了你上面的情况。
作者:
杨永胜
时间:
2013-4-13 20:33
length方法不是同步的 只是获取了一次长度
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2