JAVA變量聲明在循環體內還是循環體外


(1)

for (int i = 0; i < 10000; ++i) {
  Object obj = new Object();
  System.out.println("obj= "+ obj);
} 

(2)

Object obj = null;

for (int i = 0; i < 10000; ++i) {
  obj = new Object();
  System.out.println("obj= "+ obj);
} 

在循環體外,始終都是這一個對象,循環放入的都是最新的值。

 

在循環體內,創建的是不同的對象,每次放入的對應這不同值的對象。

將變量聲明在循環體外的方式多少能節省點空間,可是帶來的變量聲明周期變長,回收時間推后以及更加嚴重的隱性bug危險等問題很多。比較而言,有些得不償失了。

將對象的值賦值為null,相當於把對象的引用清除掉,即把引用對象的指針kill掉,再使用集合就會報空指針異常

調用集合的clear()方法,是把集合內部的對象都清空,而集合的引用還存在

for (int i = 0; i < 10000; ++i) {
  Object obj = new Object();
  System.out.println("obj= "+ obj);
} 

應改成
(2)

Object obj = null;

for (int i = 0; i < 10000; ++i) {
  obj = new Object();
  System.out.println("obj= "+ obj);
} 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM