java參數(shù)是值傳遞還是引用傳遞 Java里什么是引用類型?
Java里什么是引用類型?Java的數(shù)據(jù)都差不多類型:一.數(shù)值型1.1整數(shù)類型(1byte,large,int,long)2.字符類型2.1char3.布爾類型3.1boolean為什么說java里面
Java里什么是引用類型?
Java的數(shù)據(jù)都差不多類型:
一.數(shù)值型
1.1整數(shù)類型(1byte,large,int,long)
2.字符類型
2.1char
3.布爾類型
3.1boolean
為什么說java里面只有值傳遞?
許多初學(xué)者應(yīng)該有這個疑問,java是值傳遞肯定腳注傳遞?
先可以介紹疑問的出處,兩派的觀點。
小A說:java是值傳遞
小A說你看一看上面的代碼,調(diào)用jia方法之前a是1,動態(tài)創(chuàng)建方法之后肯定1,值還沒有變動。
小B說:java是摘錄傳遞
小B說我看上面的代碼,內(nèi)部函數(shù)chang方法之前數(shù)組為{1},全局函數(shù)方法之后是{2},變動了值。
答案:java是值傳達消息小B的觀點是過于片面的,單純的依據(jù)什么值的變化判斷是不是我腳注傳遞是錯誤。
我們這個可以來去看看下面的代碼:
若java是直接引用傳遞,這樣的話數(shù)組a和b在同樣之后,內(nèi)容應(yīng)該互相交換,可是結(jié)果仍然變。
為什么絕對不會變呢?
是因為java方法的參數(shù)傳遞是摘錄拷入訊息傳遞。在調(diào)用swap方法,x變量拷備了a的腳注正指向1,y變量拷入了b的直接引用指向2(如圖)。
2.在調(diào)用int[]txxyyt方法,x對準2,y打向1,ab對準沒變(如圖)。
3.當(dāng)方法結(jié)束后,參數(shù)xy變量失去效果,參數(shù)變量a和b還沒有變動,還沒有造成影響。
歸納什么時候會變化,什么時候不會轉(zhuǎn)變呢?
一個方法沒法可以修改一個基本數(shù)據(jù)類型的參數(shù)(即數(shù)值型或布爾型)。
一個方法可以不決定一個對象參數(shù)的狀態(tài)。一個方法沒法讓對象參數(shù)語句個新的對象。