日期:2014-05-20  浏览次数:20564 次

java中的数组小问题
public class shuzhu{
public static void main(String args[]){
int a[]={100,200,300};
int b[]={10,11,12,13,14,15,16};
b=a;
b[0]=123456;
System.out.println("数组a:"+a[0]+","+a[1]+","+a[2]);
System.out.println("数组b:"+b[0]+","+b[1]+","+b[2]);
System.out.println("数组b的长度:"+b.length);
}
}

运行后输出 都是 123456,200,300 为什么
是因为a赋值给b以后两个数组指向相同的内存位置吗?


------解决方案--------------------
是的
把引用a赋给了b,b也指向a所指的数组位置。
------解决方案--------------------
恩,b=a; 
是把a的地址赋给了b
然后b[0]又被123456覆盖
------解决方案--------------------
数组是引用数据类型,引用数据类型在赋值的时候会被赋予内存地址的引用,所以b=a以后,b数组的内存引用就指向了a的