public class example2_3 {
public static void main(String[] args) {
int a[]={100,200,300};
int b[]={10,11,12,13,14,15};
b=a;
b[0]=123456;
System.out.println("array a : "+a[0]+","+a[1]+","+a[2]);
System.out.println("array b : "+b[0]+","+b[1]+","+b[2]);
System.out.println("the length of b : "+b.length);
}}运行结果:array a : 123456,200,300
array b : 123456,200,300
the length of b : 3
难道说b=a之后,数组a与数组b就共享同一块内存吗?不然为什么修改b的值,a的值也会改变

解决方案 »

  1.   

    数组与基本类型不同,数组是个对象,b=a之后代表的是将a指向的数组对象的内存地址给了b,再操作b的时候将会通过这个地址找到对应的对象(就是a指向的那个对象)进行操作。
    b=a之后实际上b和a指向的是同一个对象了,这个等式改变的是地址。
      

  2.   

    b指向了A的引用
      相当于B和A是用的同个东西举个例子有一瓶水给了A 然后A把这瓶水跟B一起喝  如果B喝了一口那瓶里的水就少了  等A再喝的时候瓶子里剩下的就是B喝剩下的了。我想你应该可以理解了
      

  3.   

    数组与基本类型不同,数组是个对象,b=a之后代表的是将a指向的数组对象的内存地址给了b,再操作b的时候将会通过这个地址找到对应的对象(就是a指向的那个对象)进行操作。 b=a之后实际上b和a指向的是同一个对象了,这个等式改变的是地址。 顶