题:
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在基本类型中等号赋值相当于值的拷贝
例如 A=1 B=A 则B=1
在引用类型中 int[] A = z; 会进行地址的拷贝
由图看出数组A和Z同时指向了同一块地址,所以在数组A[0]=99 意味着数组Z指向的地址的对象也发生了改变!