[问题] 变量宣告需要提到循环外吗?

楼主: genomini (不重要)   2016-05-10 13:57:16
各位先进安好
之前写循环,都会将变量宣告提到外面来,如:
ClassA aaa;
for(int i=0; i<10; i++){
aaa = new ClassA();
作者: qrtt1 (有些事,有时候。。。)   2016-05-10 14:05:00
循环外没人用到,就不用放外面啊。scope 外面的 scope 少一个变量,少一个失手的机会啊不过不理解为何你想把他放外头,能说说你的想法吗?
作者: swpoker (swpoker)   2016-05-10 14:16:00
heap的问题,所以宣告放外面,但这会有数量的问题,数量多才会有问题
楼主: genomini (不重要)   2016-05-10 14:25:00
我想说这样不用再循环内一直宣告变量,程式会跑快一点刚刚测试跑一千次执行时间都差不多 有多此一举的感觉..
作者: ssccg (23)   2016-05-10 14:54:00
Java的宣告local变量只是在compile时变量表多加一个变量执行到method时stack多留一个位置并不是跑到宣告那行时会做什么动作..
楼主: genomini (不重要)   2016-05-10 15:13:00
了解 谢谢各位喔
作者: jej (晃奶大馬桶)   2016-05-10 21:49:00
http://goo.gl/2u64rZ 看起来和物件是否immutable 有关多执行序时 不是immutable 若使用iterator会导至non thread sNon thread safe,不然其实也只有scope的差别
作者: haha02 (来人!上夹棍!)   2016-05-11 02:39:00
楼上说的这个没关系吧 区域变量的话没有并行存取的问题
作者: adrianshum (Alien)   2016-05-16 01:16:00
楼楼上错误。看来你没有真的尝试理解那讨论真正在讨论什么另,最近在SO 也有回过类似的讨论,写一段小程式加javap就能印证宣告放在loop 内或外并无损效能,就算会损也是放外面会损的机会比较大。

Links booklink

Contact Us: admin [ a t ] ucptt.com