java 中 Integer 傳參方式的問題


Java本身都是值傳遞式的調用,對於對象傳遞的是地址值。給地址值重新賦值等於重新指向,不會影響外層。
而且這里Integer對象也有特殊性。其實現上可能類似
class Integer{
final int value; //一旦賦值,就不能改變。
}
這就出現:調用時傳的地址值不能改變外層+對象本身又不能改變。導致這個值沒法改變
解決方案很多
1、java風格就是,單個值用返回值。return i; 外面再i=foo();賦值;多個值用數組或對象。
2、傳遞自己的封裝類。class MutableInteger{ int value;}
3、傳遞專用AtomicInteger原子整型對象
 public static void main(String[] 參數) { AtomicInteger i=new AtomicInteger(40); i.intValue(); System.out.println(i); } public static void change(AtomicInteger i) { i.set(55); }

 

也可以實現傳遞后改值 ,
推薦方案1,盡量避免


免責聲明!

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



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