淺析java中Integer傳參方式的問題
Java本身都是值傳遞式的調(diào)用,對于對象傳遞的是地址值。給地址值重新賦值等于重新指向,不會影響外層。
而且這里Integer對象也有特殊性。其實現(xiàn)上可能類似
class Integer{
final int value; //一旦賦值,就不能改變。
}
這就出現(xiàn):調(diào)用時傳的地址值不能改變外層+對象本身又不能改變。導(dǎo)致這個值沒法改變
解決方案很多
1、java風(fēng)格就是,單個值用返回值。return i; 外面再i=foo();賦值;多個值用數(shù)組或?qū)ο蟆?BR>2、傳遞自己的封裝類。class MutableInteger{ int value;}
3、傳遞專用AtomicInteger原子整型對象
public static void main(String[] 參數(shù)) {
AtomicInteger i=new AtomicInteger(40);
i.intValue();
System.out.println(i);
}
public static void change(AtomicInteger i) {
i.set(55);
}
也可以實現(xiàn)傳遞后改值 ,
推薦方案1,盡量避免
相關(guān)文章
Java實現(xiàn)4種微信搶紅包算法(小結(jié))
微信紅包是大家經(jīng)常使用的,到現(xiàn)在為止仍然有很多紅包開發(fā)的需求,實現(xiàn)搶紅包算法也是面試??碱},本文就詳細的來介紹一下如何實現(xiàn),感興趣的可以了解一下2021-12-12
springboot如何獲取yml文件的自定義參數(shù)
這篇文章主要介紹了springboot如何獲取yml文件的自定義參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot自定義MessageConverter與內(nèi)容協(xié)商管理器contentNegotiationManag
這篇文章主要介紹了SpringBoot自定義MessageConverter與內(nèi)容協(xié)商管理器contentNegotiationManager的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-10-10

