篇首語:Java基本類型傳遞的是值的拷貝,Java引用類型傳遞的是對象地址的拷貝。
在java中,java是通過值傳遞的。

按值傳遞

Java值調(diào)用方式
基本類型是傳遞的值本身的一個(gè)副本。副本中的值的改變不會影響原來值的改變。如圖所示:

代碼

運(yùn)行結(jié)果
內(nèi)存示意圖:

棧
引用類型傳遞是拷貝傳遞對象地址。

拷貝對象的引用
傳遞的對象改變地址的時(shí)候,不影響原對象的地址。但是傳遞對象進(jìn)行內(nèi)部組成的時(shí)候,原數(shù)據(jù)也會改變。具體如圖:
圖一可以看出改變副本的地址的時(shí)候,原數(shù)據(jù)地址不會改變。

運(yùn)行結(jié)果(一)
圖二可以看出,副本改變對象的屬性的時(shí)候,源數(shù)據(jù)跟著改變。

運(yùn)行結(jié)果(二)

內(nèi)存示意
總結(jié)如下:(來自《Java核心技術(shù)》)
*一個(gè)方法不能修改一個(gè)基本數(shù)據(jù)類型的參數(shù)(即數(shù)值或布爾型)。
*一個(gè)方法可以改變一個(gè)對象參數(shù)的狀態(tài)。
*一個(gè)方法不能讓對象參數(shù)引用一個(gè)新的對象。
*******************