首頁  >  文章  >  Java  >  淺析java中Integer傳參方式的問題

淺析java中Integer傳參方式的問題

高洛峰
高洛峰原創
2017-01-16 16:12:541589瀏覽

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,盡量避免

更多淺析javajava中Integer參照方式的問題相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn