论坛首页 Java企业应用论坛

代码难道不是这么写的?

浏览 66464 次
该帖已经被评为良好帖
作者 正文
   发表时间:2010-07-28  
无论如何也扯不到堆内存上面去啊 要扯也只能扯到栈内存去 但是栈内存是在超出函数体时就释放了  看来。。。如果这考官不是个傻x,就是想考考你是不是真正明白
0 请登录后投票
   发表时间:2010-07-28  
发帖还要做测试题? 我写了测试程序,反编译看了下。评审官的观点是错误的。 详见http://alhawk.iteye.com/admin/blogs/723494
0 请登录后投票
   发表时间:2010-07-28  
楼主太低调了
面对这种评审官
那就需要问个明白
改的理由是什么.
把测试的数据拿出来.

说一个有点跑题的问题.
你们开这么一个评审会 花费的时间
不计算会议室里的电费水费.
单单地计算 会议室里的人员小时工资 * 会议时间
看看你们浪费了多少钱
把这些钱 转换成物理内存 放到机子上 再跑一下 看能提高多少

这帮傻_X 还当评审官呢.

下一次楼主可事先做好准备,
多准备一些奇怪的代码 故意设套
看似有问题 让他们评
之后当着他们面, 把你的证据,数据拿出来给他们看
羞辱他们几次
保证之后他们会服服贴贴的
0 请登录后投票
   发表时间:2010-07-28  
leonwoo 写道
骂你,你还觉得冤枉?如果循环很多,像这样的语句 i<arr.len 替不是很耗资源?
是不是应该放在循环之外。写代码之前难道公司不给你们培训编码规范吗?

完全胡扯。
什么叫编码规范,LZ的编码怎么不规范了。
每循环一次,在栈里创建一个变量a,指向一个对象,一次循环结束,变量a消失。进入下一次循环,引用的对象还在方法区和堆里等待垃圾回收器收集。第二次重复第一次的,对象还会在堆或方法区里。
根本不存在重复创建a的说法。
创建在外面有什么用,哪里还用到了?
我就fu**了。
0 请登录后投票
   发表时间:2010-07-28  
new 新的对象没错,毕竟每个对象都是不一样的,可能他指的是那个计算长度的函数吧,每次循环都得重新计算一次
0 请登录后投票
   发表时间:2010-07-28  
fengfeng925 写道
leonwoo 写道
骂你,你还觉得冤枉?如果循环很多,像这样的语句 i<arr.len 替不是很耗资源?
是不是应该放在循环之外。写代码之前难道公司不给你们培训编码规范吗?

完全胡扯。
什么叫编码规范,LZ的编码怎么不规范了。
每循环一次,在栈里创建一个变量a,指向一个对象,一次循环结束,变量a消失。进入下一次循环,引用的对象还在方法区和堆里等待垃圾回收器收集。第二次重复第一次的,对象还会在堆或方法区里。
根本不存在重复创建a的说法。
创建在外面有什么用,哪里还用到了?
我就fu**了。

而且确实不存在在循环里创建对象,数组中的对象是早创建好放进来的,可能是对象可能是常量。
0 请登录后投票
   发表时间:2010-07-28  
帖子让我想起了鲁迅笔下的孔乙己,评审官水平不够啊!!

结论如下,大家不用争论了,不懂java的不要乱说。

1.将变量声明在for循环外声明,扩大的变量的有效范围,从java gc上讲,反而不利于内存释放
2.变量引用数组元素,不会新建对象,不会耗内存空间
3.length是数组属性,直接引用,不需要计算,不需要再声明新变量。凡是说这个有问题的,应该是跟List.size()搞混了,List的size方法是要每次计算的。

最终,楼主的写法是最优的。严重BS考官ing
0 请登录后投票
   发表时间:2010-07-28   最后修改:2010-07-28
linliangyi2007 写道
帖子让我想起了鲁迅笔下的孔乙己,评审官水平不够啊!!

结论如下,大家不用争论了,不懂java的不要乱说。

1.将变量声明在for循环外声明,扩大的变量的有效范围,从java gc上讲,反而不利于内存释放
2.变量引用数组元素,不会新建对象,不会耗内存空间
3.length是数组属性,直接引用,不需要计算,不需要再声明新变量。凡是说这个有问题的,应该是跟List.size()搞混了,List的size方法是要每次计算的。

最终,楼主的写法是最优的。严重BS考官ing


list.size()也不需要重新计算的,至少从ArrayList和LinkedList的实现来说,都是作为一个属性存在。
0 请登录后投票
   发表时间:2010-07-28  
linliangyi2007 写道
帖子让我想起了鲁迅笔下的孔乙己,评审官水平不够啊!!

结论如下,大家不用争论了,不懂java的不要乱说。

1.将变量声明在for循环外声明,扩大的变量的有效范围,从java gc上讲,反而不利于内存释放
2.变量引用数组元素,不会新建对象,不会耗内存空间
3.length是数组属性,直接引用,不需要计算,不需要再声明新变量。凡是说这个有问题的,应该是跟List.size()搞混了,List的size方法是要每次计算的。

最终,楼主的写法是最优的。严重BS考官ing

这个应该是正解了
0 请登录后投票
   发表时间:2010-07-28  
dennis_zane 写道
linliangyi2007 写道
帖子让我想起了鲁迅笔下的孔乙己,评审官水平不够啊!!

结论如下,大家不用争论了,不懂java的不要乱说。

1.将变量声明在for循环外声明,扩大的变量的有效范围,从java gc上讲,反而不利于内存释放
2.变量引用数组元素,不会新建对象,不会耗内存空间
3.length是数组属性,直接引用,不需要计算,不需要再声明新变量。凡是说这个有问题的,应该是跟List.size()搞混了,List的size方法是要每次计算的。

最终,楼主的写法是最优的。严重BS考官ing


list.size()也不需要重新计算的,至少从ArrayList和LinkedList的实现来说,都是作为一个属性存在。


应该是跟LinkedList的get()搞混了。get每次都是从链的开始位置开始遍历。不知道如果get的i大于size的一半会不会从后面往前面遍历。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics