java傳參數(shù)是傳值還是引用

1、基參數(shù)是本數(shù)據(jù)類型 傳遞是值(或者說值得副本)硼被。

2、參數(shù)是對象的話傳遞的是對象引用的副本。(1.修改引用副本指向新對象不會影響原來對象吉执,2.修改引用指向的對象的屬性會修改成功,3三痰。如果傳遞時string腰懂,修改引用指向string對象不會修改成功,string是不可變的隅津,原引用對象不變诬垂。4.傳的是bigdecimal,對bigdecimal引用指向對象進行add伦仍。muidibel等不會修改原bigdicimal,如果你d=d.add(c),這樣會給引用指向新對象)



這是一個Java的經典問題结窘,大部分人從C,C++語言入門充蓝,C語言有三種傳遞方式:值傳遞隧枫,地址傳遞和引用傳遞。詳細的對C語言指針谓苟,引用的我個人的理解官脓,見鏈接

Java所有操作都是傳值操作涝焙!都是傳值操作卑笨!都是傳值操作!重要的事情說三遍纱皆。

疑問湾趾?那為什么別人講的時候都是說,java的基本數(shù)據(jù)類型都是傳值派草,所有的自定義數(shù)據(jù)(類的對象)都是傳引用搀缠??

很簡單,因為這樣好理解近迁,意思是說:“同學們艺普,如果我們把一個基本數(shù)據(jù)類型的值(變量)傳遞給一個函數(shù)的形參,那么無論我們對這個變量怎么操作鉴竭,函數(shù)運行完之后歧譬,并不會改變這個變量的值!(到這里都是對的)但是如果我們把一個類的實例(對象)作為參數(shù)傳遞給函數(shù)搏存,那么我們在函數(shù)里面對這個對象的改變瑰步,會實際地改變這個對象的值!(這里就不完全正確了)”璧眠。

對于Java的對象與引用的理解缩焦,請參見:淺談Java中的對象和引用读虏。我這里簡單說一下Person person = new Person("張三"),這里面new Person("張三")是類Person的實例(或者說是對象)袁滥,person是這個實例(對象)的引用盖桥。

Java的參數(shù)傳遞都是值傳遞!L夥揩徊!

先貼一篇博文:理解Java中的引用傳遞和值傳遞,如果你覺得這個人講的很有道理嵌赠,那么你是麻瓜(哇塑荒!馬老師附體!)猾普。我先不解釋袜炕,去看下這篇博文的1樓評論!

我們先定義初家,什么是值傳遞偎窘,什么是引用傳遞。

值傳遞:方法調用時溜在,實際參數(shù)把它的值的副本傳遞給對應的形式參數(shù)陌知。特點:此時內存中存在兩個相等的基本類型,即實際參數(shù)和形式參數(shù)掖肋,后面方法中的操作都是對形參這個值的修改仆葡,不影響實際參數(shù)的值

引用傳遞:方法調用時志笼,實際參數(shù)的引用(地址沿盅,而不是參數(shù)的值)被傳遞給方法中相對應的形式參數(shù),函數(shù)接收的是原始值的內存地址纫溃;特點:在方法執(zhí)行中腰涧,形參和實參內容相同,指向同一塊內存地址紊浩,方法執(zhí)行中對引用的操作將會影響到實際對象窖铡。

值傳遞實在是太簡單了,大家應該都容易理解坊谁,既然傳遞的是實際參數(shù)的副本费彼,那么更改這個副本,跟原來的變量沒有一點關系口芍。

但是對于引用傳遞箍铲,一般的支持引用的例子我也不說了△尥郑看一個稍微特殊的例子:如果我們把下面的例子理解為引用傳遞虹钮,輸出應該是: LI Si 才對聋庵!因為zhangsan這個(new Person("ZHANG San")的)引用指向了新的對象!但實際結果是zhangsan這個引用指向的對象的名字并沒有變芙粱!

1publicclass ValueOrRef { 2publicstaticvoid main(String[] args) { 3Person zhangsan =newPerson("ZHANG San"); 4? ? ? ? changePerson(zhangsan); 5? ? ? ? zhangsan.printName(); 6? ? } 7publicstaticvoid changePerson(Person person){ 8person =newPerson("LI Si"); 9? ? }10}1112class Person {13String name = "default";14public Person(String name) {15this.name = name;16? ? }17publicvoid changeName(String name){18this.name = name;19? ? }20void printName() {21System.out.println(this.name);22? ? }23}

所以這里,我們把這種傳遞也理解為”值傳遞“只不過這里的值氧映,是一個”引用”的值春畔!也就是我們把實際參數(shù)(一個引用)拷貝一份賦值給形式參數(shù),形式參數(shù)進行操作岛都。當形式參數(shù)對本身的對象進行了變動操作律姨,這里的效果跟引用傳遞是相同的。但是一旦給形式參數(shù)進行賦值類型的操作臼疫,這個賦值操作并不會像C語言的引用那樣择份,把這個賦值的效果反映在函數(shù)運行結束之后!烫堤!

總結:不要糾結與值傳遞與引用傳遞的概念了荣赶,我們明白函數(shù)執(zhí)行的過程就好了!為了更好地理解整個運行過程的變化鸽斟,請參考:Java:按值傳遞還是按引用傳遞詳細解說(其中有圖片演示拔创,很清楚)。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末富蓄,一起剝皮案震驚了整個濱河市剩燥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌立倍,老刑警劉巖灭红,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異口注,居然都是意外死亡变擒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門疆导,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赁项,“玉大人,你說我怎么就攤上這事澈段∮撇耍” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵败富,是天一觀的道長悔醋。 經常有香客問我,道長兽叮,這世上最難降的妖魔是什么芬骄? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任猾愿,我火速辦了婚禮,結果婚禮上账阻,老公的妹妹穿的比我還像新娘蒂秘。我一直安慰自己,他們只是感情好淘太,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布姻僧。 她就那樣靜靜地躺著,像睡著了一般蒲牧。 火紅的嫁衣襯著肌膚如雪撇贺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天冰抢,我揣著相機與錄音松嘶,去河邊找鬼。 笑死挎扰,一個胖子當著我的面吹牛翠订,可吹牛的內容都是我干的。 我是一名探鬼主播鼓鲁,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼蕴轨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了骇吭?” 一聲冷哼從身側響起橙弱,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎燥狰,沒想到半個月后棘脐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡龙致,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年蛀缝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片目代。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡屈梁,死狀恐怖,靈堂內的尸體忽然破棺而出榛了,到底是詐尸還是另有隱情在讶,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布霜大,位于F島的核電站构哺,受9級特大地震影響,放射性物質發(fā)生泄漏战坤。R本人自食惡果不足惜曙强,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一残拐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碟嘴,春花似錦溪食、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至袱衷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笑窜,已是汗流浹背致燥。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留排截,地道東北人嫌蚤。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像断傲,于是被迫代替她去往敵國和親脱吱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理认罩,服務發(fā)現(xiàn)箱蝠,斷路器,智...
    卡卡羅2017閱讀 134,664評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法垦垂,類相關的語法宦搬,內部類的語法,繼承相關的語法劫拗,異常的語法间校,線程的語...
    子非魚_t_閱讀 31,641評論 18 399
  • 兩年前,我去美國一個同學的畢業(yè)典禮页慷,那是我第一次出國憔足,那次旅程給我開了足夠的眼界了,其中有一點就是中西方之間的教育...
    一支特立獨行的噴子閱讀 132評論 0 0
  • 上市公司必須遵守財務公開的原則酒繁,定期公開自己的財務狀況滓彰,提供有關財務資料,便于投資者查詢欲逃。上市公司公布的財務資料中...
    腹肌女配角閱讀 748評論 0 6
  • 這幾天有事兒要忙弓叛,沒有精力畫石頭畫,畢竟畫石頭是個精細活兒诚纸,每一個都需要花費挺長時間才能畫好撰筷。但是我又不想停止日更...
    小崔喵喵噠石頭畫閱讀 1,342評論 52 40