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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 348532020   /  2015-5-27 10:37  /  970 人查看  /  26 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

曲终烟尽 发表于 2015-5-28 11:12
权限太低,给点分吧。楼上的都是匆匆过客,木的意思。看我多么的虔诚,加个好友吧。 ...

首先,谢谢你的认真。
其次,一天最多20分,已经给完了,所以也给不了了。
最后一点,也是比较重要的,我觉得你应该重新学习一下StringBuider这个类。
另外这个x是指的行号,自然得++ 。 StringBuider.append()方法返回值类型还是StringBuider类型的。所以sb接受没有任何问题。至于每次都要new 一个对象是因为,如果你不是每次新建一个字符串的话,你的字符串是在上一行的基础上加上了下一行的内容。 说起来不好说,把new的那个语句移到循环外面运行一下就知道了。
回复 使用道具 举报
348532020 发表于 2015-5-28 11:29
首先,谢谢你的认真。
其次,一天最多20分,已经给完了,所以也给不了了。
最后一点,也是比较重要的,我 ...

StringBuilder还没学到,刚才理解错了,我以为是像数组操作一样在第x位置添加一个字符串,一开始看的是两个append。理解错了。那这一块儿代码是对的。。。
回复 使用道具 举报
348532020 发表于 2015-5-28 11:29
首先,谢谢你的认真。
其次,一天最多20分,已经给完了,所以也给不了了。
最后一点,也是比较重要的,我 ...

sb = sb.append(x).append(":").append(str);
这句话改成:
sb=sb.append(x+":"+str);
应该也可以吧???我觉得应该没问题。。这连着3个append虽然没问题,看着怪着急的。
回复 使用道具 举报
本帖最后由 曲终烟尽 于 2015-5-28 11:57 编辑

这层楼删不掉么,,,用快速回复,按了个Enter结果没输完。。。
                sb.replace(0, sb.length(), x+":"+str);
回复 使用道具 举报
本帖最后由 曲终烟尽 于 2015-5-28 11:58 编辑

我还是觉得你那里一直重复new 对象不妥。
我刚看了StringBuilder的方法里有替换(replace)效果相同。你可以用下面这个方法:
                sb.replace(0, sb.length(), x+":"+str);
来替换。
把new的操作放在while循环前边,只需要new一个对象就足够了。
再new那么多就是制造垃圾啊。你只用一次就不管了,剩下的都是虚拟机在处理的不用的垃圾了。
可以优化就尽量优化啊。        哥们。假如你读取的是一个小说文件,那得有多少万行文本,你得new多少万个sb对象!!!很恐怖的。。。。
回复 使用道具 举报
曲终烟尽 发表于 2015-5-28 11:54
我还是觉得你那里一直重复new 对象不妥。
我刚看了StringBuilder的方法里有替换(replace)效果相同。你可以 ...

嗯,这个确实是。应该可以优化的。谢谢
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马