標題:

JAVA程式設計的問題

發問:

麻煩各位大大幫我解惑一下 請寫出一支程式包含兩個函數A與B,A函數呼叫B函數,並傳入陣列變數c,期初始值為123,函數B將c修改為456,請在函數B執行完畢後,在函數A再次列印出c的值是123 or 456?

最佳解答:

public class test { public static void main(String[] args) { int []c = new int[2]; c[0]=123; A(c); } static void A(int[] c){ B(c); System.out.print(c[0]); } static void B(int[] c){ c[0]=456; } } 這是您要的嗎? 會印出456,因為c把它的參考複製一份給A(),而A()也同樣把它的方法引數(從main那複製陣列c過來的記憶體位置)複製一份給B(),也就是說原陣列c、A()的引數c和B()的引數c都是參考到位於heap記憶體區塊的同一陣列物件,也因此,不論用哪個引數對陣列作修正,印出來都是一樣的結果。

 

此文章來自奇摩知識+如有不便請留言告知

其他解答:481517FD598DAD6B
arrow
arrow

    wszspj2 發表在 痞客邦 留言(0) 人氣()