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