JAVA代码Review时遇到的问题(请哥哥姐姐帮忙看看!!!)

hao-kid 发布于 2012/12/28 17:16
阅读 659
收藏 0

大家好!

我的问题很贱,但我就是想知道,拜托帮我看看!

在JAVA语言里

这种写法

Object testObj = null ;

for(int i=0;i<10;i++){

    testObj = new Object() ;

    testObj.doSomeThing() ;

}

和下边这种写法

for(int ....){

    Object testObj = new Object() ;

    testObj.doSomeThing() ;

}

哪个好?

假设是这种情景,对象本身特别大,属性、方法贼多,循环10万次

哪种写法更好???从性能角度

个人倾向第二种,我记得JAVA就是这样的,

要是C的话,我认为应该是第一种比较好!

就这小事儿,跟同事好一顿锵锵。。。。。。

我的理由是这样的,首先我认为Java里对象的声明的次数无所谓,对象只有在实例化时才会在堆内存中开辟空间,而且,将对象放在for循环里面,降低了对象的作用域,从代码理解的角度讲,更优。

大家来看看哈!!~!~~

先谢过各位哥哥姐姐啦!~!!~

加载中
0
魔力猫
魔力猫

对象本身特别大 那么反复调用应该缓存的吧。你们不纠结在new这里,反而对引用的数量斤斤计较吗?

那种情况好,拿出性能测试的结果再来说。优化是要在可测量的前提下进行的。

0
逝水fox
逝水fox
好不好,与其 纸上谈兵没不如自己写个代码一试便知
0
vvtf
vvtf

这要看你的testObj 作用,如果只是这里做了就不管,就用第一种

如果你保存,如放到一个list中,那么肯定第二种。

0
liubaing
liubaing
这两种方式 ,我本地测试基本无差别,反编译class代码一致,具体你还是自己测测
0
proliang
proliang

引用来自“rouyh”的答案

这要看你的testObj 作用,如果只是这里做了就不管,就用第一种

如果你保存,如放到一个list中,那么肯定第二种。

正解~
0
Monkey
Monkey
我建议全部第二种,第一种写法在某些jvm上递归调用会导致崩溃。
奋斗的海贼
奋斗的海贼
有这么神奇?
0
疯狂的艺术家
疯狂的艺术家

引用来自“Monkey”的答案

我建议全部第二种,第一种写法在某些jvm上递归调用会导致崩溃。
为什么会崩溃?
Monkey
Monkey
原因未知,我是在mac的jvm上遇到的,至今还记得为这个问题整了一个星期,尝试不少办法,最后无意中发现,变量在使用的时候声明就没事了,只要是在之前声明就崩溃。
0
苏大泉
苏大泉
每次循环调用 声明一次变量 。。。
0
火红莲
火红莲
我倾向第一种,,,
返回顶部
顶部