• clone()方法


    1.clone方法可以克隆所指类型中的内容,并指向一个跟被克隆一样的东西。比如说int arr[] ={1 , 2 ,3},使用克隆方法int cloneArr[] =arr.clone(),这时cloneArr就指向了一个新的有三个空间的数组,跟被克隆的arr所指的数组类型及内容一致。

    克隆是对内容进行了复制,但是克隆后指向的是新的数组,不是原来的arr数组,所以对arr和cloneArr是不同的操作。

    2.当对类类型的数组进行克隆时,比如有个Test类,类里只有value; Test[] arr = new Test[2],arr[1] = new Test(),现在arr指向了两个类,并对数组中的第二个位置创建了Test类对象,并给这个对象赋值arr[1].value = 123,这时情况如图

    现在开始克隆,Test[] cloneArr = arr.clone(),这时也指向了类数组,数组里的内容和arr的一样,只是内容一样,arr和cloneArr指的不同,只是内容一样,这时克隆的情况如图

    发现cloneArr[1]所指的和arr[1]所指的一样,因为克隆时把被克隆的内容都拿过来了,所以指向相同,这时如果让cloneArr[1] = new Test(),这样就各指各的了,此时情况如图

    3.二维数组时也是同理,克隆后会把地址也克隆过来,所以会指向同一地方,int[][] arr = new int[2][3],int[][] cloneArr = arr.clone();这时情况如图:

    先给arr[1][2]进行赋值,然后继续克隆,cloneArr[1] = arr[1].clone;这时会把内容赋值过来,但是不在指向原处,此时情况如图:

  • 相关阅读:
    poj 3264(RMQ或者线段树)
    LCA上的RMQ模板算法
    LCA离线算法Tarjan的模板
    poj 1330(初探LCA)
    hdu 3367(与最大生成树无关。无关。无关。重要的事情说三遍+kruskal变形)
    hdu 4496(并查集逆向添边)
    hdu 1829(继续扩展并查集)
    poj 1182 (扩展并查集)
    hdu 3038(扩展并查集)
    hdu 3371(kruskal)
  • 原文地址:https://www.cnblogs.com/yudongxuan/p/11515118.html
Copyright © 2020-2023  润新知