[問題] 變數宣告需要提到迴圈外嗎?

作者: 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