clone()方法
Posted yudongxuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;这时会把内容赋值过来,但是不在指向原处,此时情况如图:
以上是关于clone()方法的主要内容,如果未能解决你的问题,请参考以下文章