題:
class ChangeIt
{
? ?static void doIt( int[] z )
? ? {
? ? ? ? int[] A = z;
? ? ? ? A[0] = 99;
? ? }
}
public class TestIt
{
? ? public static void main( String[] args )
? ? {
? ? ? ? int[] myArray = {1, 2, 3, 4, 5};
? ? ? ? ChangeIt.doIt(myArray);
? ? ? ? for (int i = 0; i < myArray.length; i++)
? ? ? ? {
? ? ? ? ? ? System.out.print(myArray[i] + " ");
? ? ? ? }
? ? }
}
選擇:?( )
A .1 2 3 4 5
B. 99 2 3 4 5
C. 0 2 3 4 5
D. 99 99 99 99 99
答案為B, 這其中主要涉及java引用類型的地址傳遞.??all know在基本類型中等號賦值相當(dāng)于值的拷貝
例如 A=1? ? B=A? ? 則B=1
在引用類型中??int[] A = z; 會進(jìn)行地址的拷貝
運(yùn)行圖解
由圖看出數(shù)組A和Z同時指向了同一塊地址,所以在數(shù)組A[0]=99 意味著數(shù)組Z指向的地址的對象也發(fā)生了改變!