锁定老帖子 主题:代码难道不是这么写的?
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-28
无论如何也扯不到堆内存上面去啊 要扯也只能扯到栈内存去 但是栈内存是在超出函数体时就释放了 看来。。。如果这考官不是个傻x,就是想考考你是不是真正明白
|
|
返回顶楼 | |
发表时间:2010-07-28
发帖还要做测试题? 我写了测试程序,反编译看了下。评审官的观点是错误的。 详见http://alhawk.iteye.com/admin/blogs/723494
|
|
返回顶楼 | |
发表时间:2010-07-28
楼主太低调了
面对这种评审官 那就需要问个明白 改的理由是什么. 把测试的数据拿出来. 说一个有点跑题的问题. 你们开这么一个评审会 花费的时间 不计算会议室里的电费水费. 单单地计算 会议室里的人员小时工资 * 会议时间 看看你们浪费了多少钱 把这些钱 转换成物理内存 放到机子上 再跑一下 看能提高多少 这帮傻_X 还当评审官呢. 下一次楼主可事先做好准备, 多准备一些奇怪的代码 故意设套 看似有问题 让他们评 之后当着他们面, 把你的证据,数据拿出来给他们看 羞辱他们几次 保证之后他们会服服贴贴的 |
|
返回顶楼 | |
发表时间:2010-07-28
leonwoo 写道 骂你,你还觉得冤枉?如果循环很多,像这样的语句 i<arr.len 替不是很耗资源?
是不是应该放在循环之外。写代码之前难道公司不给你们培训编码规范吗? 完全胡扯。 什么叫编码规范,LZ的编码怎么不规范了。 每循环一次,在栈里创建一个变量a,指向一个对象,一次循环结束,变量a消失。进入下一次循环,引用的对象还在方法区和堆里等待垃圾回收器收集。第二次重复第一次的,对象还会在堆或方法区里。 根本不存在重复创建a的说法。 创建在外面有什么用,哪里还用到了? 我就fu**了。 |
|
返回顶楼 | |
发表时间:2010-07-28
new 新的对象没错,毕竟每个对象都是不一样的,可能他指的是那个计算长度的函数吧,每次循环都得重新计算一次
|
|
返回顶楼 | |
发表时间:2010-07-28
fengfeng925 写道 leonwoo 写道 骂你,你还觉得冤枉?如果循环很多,像这样的语句 i<arr.len 替不是很耗资源?
是不是应该放在循环之外。写代码之前难道公司不给你们培训编码规范吗? 完全胡扯。 什么叫编码规范,LZ的编码怎么不规范了。 每循环一次,在栈里创建一个变量a,指向一个对象,一次循环结束,变量a消失。进入下一次循环,引用的对象还在方法区和堆里等待垃圾回收器收集。第二次重复第一次的,对象还会在堆或方法区里。 根本不存在重复创建a的说法。 创建在外面有什么用,哪里还用到了? 我就fu**了。 而且确实不存在在循环里创建对象,数组中的对象是早创建好放进来的,可能是对象可能是常量。 |
|
返回顶楼 | |
发表时间:2010-07-28
帖子让我想起了鲁迅笔下的孔乙己,评审官水平不够啊!!
结论如下,大家不用争论了,不懂java的不要乱说。 1.将变量声明在for循环外声明,扩大的变量的有效范围,从java gc上讲,反而不利于内存释放 2.变量引用数组元素,不会新建对象,不会耗内存空间 3.length是数组属性,直接引用,不需要计算,不需要再声明新变量。凡是说这个有问题的,应该是跟List.size()搞混了,List的size方法是要每次计算的。 最终,楼主的写法是最优的。严重BS考官ing |
|
返回顶楼 | |
发表时间: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的实现来说,都是作为一个属性存在。 |
|
返回顶楼 | |
发表时间:2010-07-28
linliangyi2007 写道 帖子让我想起了鲁迅笔下的孔乙己,评审官水平不够啊!!
结论如下,大家不用争论了,不懂java的不要乱说。 1.将变量声明在for循环外声明,扩大的变量的有效范围,从java gc上讲,反而不利于内存释放 2.变量引用数组元素,不会新建对象,不会耗内存空间 3.length是数组属性,直接引用,不需要计算,不需要再声明新变量。凡是说这个有问题的,应该是跟List.size()搞混了,List的size方法是要每次计算的。 最终,楼主的写法是最优的。严重BS考官ing 这个应该是正解了 |
|
返回顶楼 | |
发表时间: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的一半会不会从后面往前面遍历。 |
|
返回顶楼 | |