黑马程序员技术交流社区
标题:
关于StringBuffer的appen方法的问题
[打印本页]
作者:
戴振良
时间:
2012-3-30 20:41
标题:
关于StringBuffer的appen方法的问题
public class Test
{
public static void main(String[] args) throws Exception
{
String name="dai";
StringBuffer sb = new StringBuffer(name);
while(name.length()<8) {
sb =sb.append('*');
}
System.out.println(sb.toString());
}
}
复制代码
运行时出现如下异常:
Snap44.jpg
(25.47 KB, 下载次数: 41)
下载附件
2012-3-30 20:34 上传
作者:
王思兰
时间:
2012-3-30 20:53
内存溢出,你写的是while语句,里面的表达式一直为true,会一直执行下去,就会造成内存溢出了
作者:
秦超
时间:
2012-3-30 21:00
因为你的while的循环条件是name.length()<8,而不是sb的长度<8,由于字符串的长度定义后是不会改变的,所以name的长度永远是4,循环条件永远为真,所以会内存溢出,
应该改成sb的长度就对了
作者:
郑洋洋
时间:
2012-3-30 21:03
while(name.length()<8) 该成while(sb.ltngth()<8)
因为你的name.length()一直都是3,所以你的程序是死循环
作者:
何万县
时间:
2012-3-30 21:06
注意while语句的条件 name.length()永远小于8!!!!!!!!!!!!!!!!
应改为::::::
public class Test
{
public static void main(String[] args) throws Exception
{
String name="dai";
StringBuffer sb = new StringBuffer(name);
while(sb.length()<8) {---------------////原代码中name恒等于“dai”,因此长度始终为3
sb =sb.append('*');//stringbuffer 的方法append(char c) 将 char 参数的字符串表示形式追加到此序列。
}
System.out.println(sb.toString());
}
}
作者:
戴振良
时间:
2012-3-30 21:52
哦,明白了{:soso__8961432591078930798_3:}
作者:
zhouxp3323
时间:
2012-3-31 23:09
你应该在while循环里写(sb.lengh()<8),而不是name.length(),因为name是一个string类型的变量,他的length不会改变,所以你写name.leng()<8时,就会无限循环,而出现了内存溢出异常。
作者:
袁计艳
时间:
2012-3-31 23:54
异常:内存溢出
做法 sb =sb.append('*'); 改成sb.append('*');
作者:
何万县
时间:
2012-4-1 07:41
sb在append但是字符串String确没有增加,初始化时把String name的内容传进去,但是操作的还是sb,while语句里面的判断表达式一直为true,所以一直增加,导致内存溢出。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2