锁定老帖子 主题:代码难道不是这么写的?
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-28
如果数组在你那个循环结束之后不会再用到了,你应该加上“a=null;”以便可以让垃圾收集器尽早收集数组arr占用的内存,多这样做的话可以显著提高系统性能。
|
|
返回顶楼 | |
发表时间:2010-07-28
Ulysses 写道 maodiesky 写道 我若是评审会叫你这么改
int arrLen = arr.len; for(int i = 0;i<arrLen ;i++) { A a = arr[i]; System.out.println(s); } for(int i = 0,int arrLen = arr.len;i<arrLen ;i++) { A a = arr[i]; System.out.println(s); } 这样更好 for(int i = 0, arrLen = arr.len; i < arrLen; i++) { A a = arr[i]; System.out.println(s); } 这样更好 |
|
返回顶楼 | |
发表时间:2010-07-28
最后修改:2010-07-28
magicbu 写道 这段代码最大的问题不是在这一句吗
i<arr.len 长度应该首先被变量保存,避免重复计算~ 同意。。但是也视情况而定吧 如果在代码段里对数组做了增删操作的话 还是用arr.len比较好 呵呵。。 |
|
返回顶楼 | |
发表时间:2010-07-28
个人编程习惯A基本不影响;arr.len通常不建议这么写;呵呵,别太往心里去楼主,也许评审的同事对java理解不深
|
|
返回顶楼 | |
发表时间:2010-07-28
我也觉得评审没错,你这样有点浪费
|
|
返回顶楼 | |
发表时间:2010-07-28
什么a=null会更快,有什么依据,什么arr.length重复计算影响性能,都是扯淡,楼主的代码已经可以了。
在任何时候,你要想办法缩减变量的作用域,而不是扩大。 |
|
返回顶楼 | |
发表时间:2010-07-28
我只对s感兴趣!!!
|
|
返回顶楼 | |
发表时间:2010-07-28
weiqiang.yang 写道 我觉得第一种写法更清晰一点,而且又不是new对象,为什么会占用大量堆内存?
看以好几个人都说不可以在for循环里new对象, 请问,下面的代码要怎么样子来改写? for(int i=0;i<list.size();i++){ Object[] obj = (Object[]) list.get(i); A a = new A(); a.setXxx((String) obj[0]); a.setXxx((Long) obj[1]); } 谢谢! |
|
返回顶楼 | |
发表时间:2010-07-28
第一种:在方法结束后,A变量等等待回收。
第二种:for每循环一次,定一个变量并在当次循环结束后等待回收。 |
|
返回顶楼 | |
发表时间:2010-07-28
最后修改:2010-07-28
yilong511 写道 第一种:在方法结束后,A变量等等待回收。
第二种:for每循环一次,定一个变量并在当次循环结束后等待回收。 A只是个引用,它每次循环指向不同的对象,每次循环之后,它指向的对象变了,原来的对象去哪了?还在那,只不过计数减一,根本没区别。反而第一种方法扩大了A的作用域,这是很不好的实践,C程序员的思维。 |
|
返回顶楼 | |