这段Java程序的输出结果是什么?为什么?它会出现什么问题?可以如何改进 5

Stringa="v";for(inti=0;i<10000000;i++){a+=i;}System.out.println(a);------------------... String a="v";
for(int i=0;i<10000000;i++){
a+=i;
}
System.out.println(a);
------------------
对了,是不是也超出了int的取值范围?到达一个极大的正数后+1变成一个极小的负数?然后再逐步加到0?变成死循环啦
展开
 我来答
alvis_bd
2014-01-22 · 超过12用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:26.4万
展开全部
输出结果就不说了。。。我打字都会把键盘按坏
他出现的问题就是,每次 连接都会产生新的字符串对象,因此,上述代码会产生10000001个字符串对象,而且每次连接后,都会将旧的字符串丢弃,不再使用,成为碎片垃圾。内存中就含有大量的这些碎片垃圾。
改进的话,使用stringbuffer吧。所有操作都针对一个stringbuffer对象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
月亮上好冷
2014-01-22
知道答主
回答量:18
采纳率:0%
帮助的人:8.1万
展开全部
这个代码会报错的。。你这个字符串一直拼接会是个很长的。会超过string的默认长度,最大长度2^16-1=65535。再说你这种很耗性能和内存。可改用bufferstring提升性能。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianlanyijiu1
2014-01-22 · TA获得超过195个赞
知道小有建树答主
回答量:294
采纳率:100%
帮助的人:149万
展开全部
输出结果会是v开头的字符串或者报超出范围异常,因为初始值是字符串v,后面会一直当做字符串来连接下去,直到循环结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不懂就上网
2014-01-22 · TA获得超过252个赞
知道答主
回答量:108
采纳率:0%
帮助的人:85.1万
展开全部
顶楼上,应该是正确的。话说可以参考出错的解释查找。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
倾城的秘密丶c5928
2014-01-22 · TA获得超过233个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:216万
展开全部
改进:
String a="v";

StringBuffer sb = new StringBuffer();
for (int i = 0; i < 10000000; i++) {
sb.append(a);
}
String str = sb.toString();
System.out.println(str);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式