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