这算是什么。
String[] a = {"aa","bb"};
String[] b = Arrays.copyOf(a,a.length);

解决方案 »

  1.   

    明白了深克隆的定义。 public Object clone() {
            try {
                @SuppressWarnings("unchecked")
                    ArrayList<E> v = (ArrayList<E>) super.clone();
                v.elementData = Arrays.copyOf(elementData, size);
                v.modCount = 0;
                return v;
            } catch (CloneNotSupportedException e) {
                // this shouldn't happen, since we are Cloneable
                throw new InternalError();
            }
        }这2个是重新指过的
    v.elementData 
       v.modCount = 0;
      

  2.   

    是深层克隆
    除elementData外,其他是primitive.
      

  3.   

    一个对象的深克隆,就是这个对象下面所有的引用类型,都重新克隆过。那数组举例
    浅克隆就是你看到的Arrays.copyOf, System.arraycopy,数组是新的,但是里面N个元素全是旧的
    一般意义的深克隆,就是
    A[] newArray = new A[oldArray.length];
    for (int i = 0; i = newArray.length; i++) {
      newArray[i] = (A) oldArray[i].clone();
    }
    但是这个只是一般意义的,完全依赖于A类(及其所有字段所在的类)的clone方法,是否彻底所以我前面说,序列化/反序列化,是一个比较彻底深克隆,当然,也有限制,要去都是可序列化的
      

  4.   

    浅克隆就是你看到的Arrays.copyOf, System.arraycopy,数组是新的,但是里面N个元素全是旧的newArray[0].x = "我是新的,肯定是新的了,因为我克隆过了!!!"; 
    oldArray[0].x = "图样图森破";