您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Java中到底是值傳遞還是引用傳遞,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
最近,我在 stackoverflow 上,看到了一個有意思的題目。Java 中到底是“值傳遞”還是“引用傳遞”?
回答數很多,點贊數也很多。很快就吸引了我的注意力!
通過我個人對通篇文章的閱讀,得出了 3 個普遍被大家誤導的錯誤!
錯誤1:值傳遞和引用傳遞,區分的條件是傳遞的內容,如果是個值,就是值傳遞。如果是個引用,就是引用傳遞。
錯誤2:Java 是引用傳遞。
錯誤3:傳遞的參數如果是普通類型,那就是值傳遞,如果是對象,那就是引用傳遞。
實際上,Java 中只有“值傳遞”!這并不是我一家之言,而是眾多 stackoverflow 上眾多網友的討論的結果!
我選擇了一個比較經典的答案,整理給大家!
最重要的一點理解是 Dog myDog,它實際上是指向“Dog”的指針。當我們調用 foo(myDog) 的時候,你實際上是將創建的對象的地址傳遞 Dog 給 foo 方法。
注意,Java 中的指針不是指地址。
現在假設 Dog 對象駐留在內存地址 是 42。這意味著我們將 42 傳遞給該方法。
參數 someDog 設置為值 42,在代碼 “AAA” 處,someDog 跟隨 Dog,它指向(Dog 地址 42 處的對象),要求Dog(地址為 42 的那個)將他的名字改為 Max。
在代碼“BBB” 處,Dog 創建了一個新的。假設它所在地址是 74,我們將參數分配 someDog 給 74。
在代碼“CCC” 處,someDog 跟隨 Dog 它指向(Dog 地址 74 處的對象),要求 Dog(地址為 74 的那個)將他的名字改為 Rowlf。
然后,return 了。
Java 的工作方式與 C 完全相同。您可以分配指針,將指針傳遞給方法,按照方法中的指針操作并更改指向的數據。但是,您無法更改指針指向的位置。
Java 總是按值而不是通過引用傳遞參數。Java 把引用的地址當做值進行了傳遞,這么說,你應該就明白了!
看完上述內容,你們對Java中到底是值傳遞還是引用傳遞有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。