各位大侠,小弟菜鸟,想请问一下数组的问题
1. int [] array1;
   public setArray(int [] array){
    array1=array;
  }
请问这样合法吗? 我想将一个数组赋给另一个数组的话,必须一个元素元素的赋值吗?

解决方案 »

  1.   

    如果你不一个一个来的话,那么就是只有一个数组对象,数组元素也是那么多,如果你创建新的数组,一个一个元素来赋值,那么就是两个有着相同元素的数组int a[] = new int[]{1,2,4};int b[];
    b=a;//只有一个组对象.通过a,b操作都是操作同一个对象.比如说进行了b[0]=-1;那么a[0]也就成了-1;
    int a[] =  new int[]{1,2,4};
    int b[] = new int[a.length];
    //循环赋值通过操作b[0]=-1;
    a[0]还是原来的1;
      

  2.   


    你写的array1也就是array1的首地址 即array1【0】  如果说你传进实参的数组的首地址与array1【0】
    的话 你那个就没错啊
      

  3.   

    测试代码如下:public class ArrayTest {
    private int []array;
    public void setArray(int []array){
    this.array=array;
    }
    public int[] getArray(){
    return array;
    }
    public static void main(String[] args) {
    int []array={1,2,3};
    ArrayTest t=new ArrayTest();
    t.setArray(array);
    System.out.println(t.array.length);
    }
    }
    java是面向对象的,当做对象的赋值理解简单多了。
      

  4.   

    public class ArrayTest 
    {
    public static void main(String[] args) {


    int[] num1=new int[]{1,2,3};
    int[] num2=new int[3];
    System.arraycopy(num1,0,num2,0,num1.length);//注意arraycop()的用法
             for(int i=0;i<=num2.length;i++)
            {
       System.out.println(num2[i]);
            }
      

  5.   

    int [] array1;
       public setArray(int [] array){
       array1=array;
       }   这个是引用
      二楼说的循环赋值 是复制
      

  6.   

    这是直接引用,即对应一个对象.所以如果此时array1[0]的内容改变了,那么array[0]也跟着改变,而一个一个赋值是内容赋值,不会这样
      

  7.   

    public static void main(String[] args){
    int m=new int[]{5,7,10};
    sum1(m);
    sum2(m);
    System.out.println(m[0]);//结果应该是3
    }static void sum1(int[] all){
    all[0]=3;
    }
    static void sum2(int[] all){
    int[] the=new int[3];
    the[0]=all[0];
    the[0]=1;
    }
      

  8.   

    建议兄弟看看System这个类的API,里面有个:
    arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 
              从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
    另外你的写法不是在复制,只是新建个引用而已.......想要复制,建议使用上面的方法.......别忘记给分啊!
      

  9.   

    在java中简单多了,如果是c++就要一个一个赋了
      

  10.   

    int[] SourceArray={1,2,3,4,5};
    int[] targetArray=new int[SourceArray.length];第一种方法
    for(int i=0;i<SourceArray.length;i++){
     targetArray[i]=SourceArray[i];
    }第二种方法
    int[] targetArray=(int[])SourceArray.clone();第三种方法
    System.arraycopy(SourceArray,0,targetArray,0,SourceArray.length)
    第一个和第二个0分别表示数组起始位置,
    ceArray.length表示复制长度,这表示全部复制