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