午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

JAVA參數傳遞方式實例淺析【按值傳遞與引用傳遞區別】

瀏覽:18日期:2022-09-01 10:35:16

本文實例講述了JAVA參數傳遞方式。分享給大家供大家參考,具體如下:

首先要明確的是JAVA中沒有引用傳遞, 全部是按值調用

令大家所費解的 當對象引用作為參數時 函數為什么能修改真實的對象呢?這不是引用傳遞的特征嗎?

尤其先學習C++再學習JAVA的同學(比如說我自己)會這樣認為,

用白話解釋就是:

引用傳遞指針時, 連函數操作的指針都是原來的指針,比如C++傳入對象時直接用傳入的指針操作

而JAVA的引用傳進函數時 , 會復制一個引用與實參指向同一對象的引用, 操作的不是同一個引用,

如果還不明白區別再換種方式解釋一次:

JAVA只有按值調用, 參數是什么都會復制一份再操作, 就算是對象的引用也會復制一份新的引用,只不過指向的是同一個對象

這種傳參方式叫做按值傳遞, 傳遞的東西可以是引用(類似C++的指針)

如果是引用傳遞像C++傳入指針不會再復制一份了,直接拿來用

如果再不明白也沒關系,看看下面的例子和解釋分析

舉個例子:

JAVA參數傳遞方式實例淺析【按值傳遞與引用傳遞區別】

輸出結果:

JAVA參數傳遞方式實例淺析【按值傳遞與引用傳遞區別】

也就說我們用一個函數修改了 傳入的一個int變量和一個對象內容,

再輸出int變量和對象內容時發現 ,int的沒有改變,而 對象的內容改變了

這說明什么呢,說明像 int ,double等基本數據類型在參數傳遞時并沒有傳進變量本身,

而是創建了一個新的相同數值的變量, 函數修改這個新變量并沒有影響原來變量的數值,這也是按值傳遞的特點

JAVA參數傳遞方式實例淺析【按值傳遞與引用傳遞區別】

那為什么對象a的數據就改變了呢?

因為雖然也是按值傳遞, 復制了一份新的引用但是指向的對象是同一個,修改后會影響原對象

這種方式假如在函數內修改 a=null; 只是把復制的引用與對象的聯系斷開,不影響函數外與實際對象

JAVA參數傳遞方式實例淺析【按值傳遞與引用傳遞區別】

這就是按值傳遞, 即使傳的是引用也不是引用傳遞,

因為引用傳遞是不復制的,直接使用參數,如下圖:

這時候函數把指針a=null就指針就置空了,函數外也無法再通過指針訪問對象了

JAVA參數傳遞方式實例淺析【按值傳遞與引用傳遞區別】

這樣可以理解了嗎,自我覺得足夠明白了, 我如此深厚的畫圖功底都供出來了,再不明白就是在為難我胖虎!

水平有限, 可能有錯誤,敬請指出!

更多關于java相關內容感興趣的讀者可查看本站專題:《Java常用函數與方法技巧匯總》、《Java面向對象程序設計入門與進階教程》、《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》

希望本文所述對大家java程序設計有所幫助。

標簽: Java
相關文章:
主站蜘蛛池模板: 中国美女毛片 | 午夜免费观看视频 | 韩国jizz| 蜜臀av性久久久久蜜臀av麻豆 | 欧美特级黄色大片 | 三级黄网站 | 国产精品日 | 国产亚洲欧美日韩高清 | 中文字幕在线观看的网站 | 亚洲视频在线一区 | 日韩免费视频一区二区 | 天天人人| 免费萌白酱国产一区二区三区 | 日韩精品免费视频 | 国产日韩欧美在线观看 | 中国特黄一级片 | 99热这里只有精品99 | 成人精品区 | 四虎成人av| 日本免费不卡视频 | 亚洲成人激情在线 | 久久国产精品波多野结衣av | 免费看黄网站在线观看 | 久久精品视频一区二区 | 青青操视频在线观看 | 九九九在线 | 91精品国产乱码久久久久 | 成人一区二区视频 | 黄色片在线观看视频 | 日韩中文一区二区 | 亚洲色图清纯唯美 | 成人中文字幕在线观看 | 自拍偷自拍亚洲精品播放 | 国产一区99| 四虎影院在线观看免费 | 色综合天天综合网国产成人网 | 亚洲免费在线视频 | 国产在线一区二区三区四区 | 国产精品麻豆入口 | √资源天堂中文在线 | 成人va视频 |