(1)
a[]={0,1,2}  
b[]={0,1,2,3} 
b=a  问b?
(2)   
a[]={0,1,2}  
b[]
b=a
问b?
有个思想,(1)中a数组3个地址,b数组4个地址,赋值后,b数组变为3个地址;(2)赋值不成功,不知原因是什么?

解决方案 »

  1.   

    (1) 楼主可以反过来试下, 恐怕也会出现(2)的错误。 那是因为开始你先吧a、b初始化了长度,而b的长度比a大, 所以成功了, 并且指向了a的地址。 (2)就不用说了, b的初始长度为0, 你把a赋值给b一定出错。
    个人意见
      

  2.   

            int[] a = {0,1,2};
            int[] b = {0,1,2,3};
            int[] c;
            b=a;
            c=a;
            
            for(int i=0;i<b.length;i++){
             System.out.println(b[i]);
            }
            for(int i=0;i<c.length;i++){
             System.out.println(c[i]);
            }输出的结果一样,程序也没有错误。
      

  3.   

    (1) a,b的在内存中地址,并且分别指向两个不同的区域,进行b=a,就是让b也指向a指向的地方,也就是a,b指向同一个地方了。
    (2) b还没分配大小,默认为0。b=a肯定就错了。
      

  4.   

    int[] b;
    b = {1,2,3};
    //这样为什么不行?
      

  5.   

    复制数组有两种方式
    一种是浅复制,就是把一个数组的REFERENCE赋值给另一个数组,比如INT[] A = NEW INT[4];INT[] B = NEW INT[4]; B= A;还一种就是深复制,就是复制一个数组里的每一个元素到另外一个数组for(int i=0;i<a.length;i++){b[i] = a[i];
    }
      

  6.   

    不会不成功
    b[]={0,1,2,3} 
    b为数组地址的引用,只是一个引用变量,用int *b的作用一样
      

  7.   

    a[]={0,1,2} 
    b[]
    b=a
    这个不会出错吧?b 只是声明的一个引用,它在栈中,没有空间大小一说。
    当你 b = a 时,是把 a 指向的堆中的地址赋给了 b;
    b在赋值前在栈中是null,赋值后它的值就是堆中那个数组的地址。
      

  8.   

    1楼和5楼说的都不对,他们没有经过动手验证。
    同意11楼的说法,a ,b 只是数组“变量”,指向了某一块地址,如果使用 b=a,相当于让b指向a所指向的地方,不会出现什么空间不够的问题。那空间本来就不属于a或者b本身
      

  9.   


    int[]b = {1,2,3};这样就行,{}大括号赋值的方法只能在声明变量的时候初始化。