本帖最后由 李俊伟 于 2013-3-1 01:25 编辑
public class BaseTest6 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
for(int i = 0 ; i < 10 ; i++) {
sb.append("abcd");
}
int length = sb.length();
for(int i = 0 ; i <sb.length() ; i++){
//这里只能遍历到一半的样子,测试发现i到20循环就结束了。求原理!
System.out.println(sb.length()+"...."+i+"...."+length);
sb.deleteCharAt(i);//当删除一个字符,sb的长度就减少1
}
/*
* 分析:(1)当i = 0时,i<40(true),打印:40...0...40;sb.deleteCharAt(0);sb.length()=39;i++。
* (2)i=1,1<39(true),打印:39...1...40;sb.deleteCharAt(1);sb.length()=38;i++。
* (3)i=2,2<38(true),打印:38...2...40;sb.deleteCharAt(2);sb.length()=37;i++。
* .
* .
* .
* (20)i=18,19<22(true),打印:22...18...40;sb.deleteCharAt(18);sb.length()=21;i++。
* (20)i=19,19<21(true),打印:21...19...40;sb.deleteCharAt(19);sb.length()=20;i++。
* (21)i=20,20<20(false),循环结束。
*
* */
}
}
|