package org.test.algo;
public class ArrCopyTest {
/**
* @param args
*/
public static void main(String[] args) {
// //测试一
//
// //拷贝一个数组,我们可以直接通过a=b的形式赋值,但是这样是不是真的就是独立的拷贝?
// String[] arr1=new String[]{"a","b","c"};
// ArrCopyTest.printArr(arr1);
// String[] arr1copy1=arr1;
// ArrCopyTest.printArr(arr1copy1);
// System.out.println("-------");
// arr1[1]="haha";//现在,我把原来数组arr1的值改变一下
// ArrCopyTest.printArr(arr1);
// ArrCopyTest.printArr(arr1copy1);//从打印结果看,arr1的拷贝数组arr1copy1的值也跟着改变了,
// //说明通过=的拷贝只是引用相同的内存地址,并不是真正我们认为的拷贝一个新的变量
// //测试二
// String[] arr1=new String[]{"a","b","c"};
// ArrCopyTest.printArr(arr1);
//
// //System.arraycopy(src, srcPos, dest, destPos, length);的用法测试
// String[] arr1copy2=new String[arr1.length];
// System.arraycopy(arr1, 0, arr1copy2, 0, 3);
// ArrCopyTest.printArr(arr1copy2);
//
// System.out.println("arr1copy3-----arr1, 0, arr1copy3, 1, 1----------");
// String[] arr1copy3=new String[arr1.length];
// System.arraycopy(arr1, 0, arr1copy3, 1, 1);
// ArrCopyTest.printArr(arr1copy3);
//
// System.out.println("arr1copy4-----arr1, 1, arr1copy4, 1, 1----------");
// String[] arr1copy4=new String[arr1.length];
// System.arraycopy(arr1, 1, arr1copy4, 1, 1);
// ArrCopyTest.printArr(arr1copy4);
//
// System.out.println("arr1copy5-----arr1, 0, arr1copy5, 1, 2----------");
// String[] arr1copy5=new String[arr1.length];
// System.arraycopy(arr1, 0, arr1copy5, 0, 1);
// ArrCopyTest.printArr(arr1copy5);
//
// System.out.println("arr1copy6-----arr1, 0, arr1copy6, 1, 2----------");
// String[] arr1copy6=new String[arr1.length];
// System.arraycopy(arr1, 0, arr1copy6, 1, 2);
// ArrCopyTest.printArr(arr1copy6);
//测试三
// String[] arr1=new String[]{"a","b","c"};
// ArrCopyTest.printArr(arr1);
//
// System.out.println("arr1copy7-----arr1, 0, arr1copy7, tergetPos, arr1copy7.length-tergetPos----------");
// String[] arr1copy7=new String[arr1.length];
// int tergetPos=0;//目标开始的下标,arr1copy7.length-tergetPos是拷贝的长度,这样保证不越界
// System.arraycopy(arr1, 0, arr1copy7, tergetPos, arr1copy7.length-tergetPos);
// ArrCopyTest.printArr(arr1copy7);
//
// arr1[1]="hello";//现在,我把原来数组arr1的值改变一下
// ArrCopyTest.printArr(arr1);
// ArrCopyTest.printArr(arr1copy7);
//实验四clone()
String[] arr1=new String[]{"a","b","c"};
ArrCopyTest.printArr(arr1);
System.out.println("arr1copy8=arr1.clone()");
String[] arr1copy8=arr1.clone();
ArrCopyTest.printArr(arr1copy8);
arr1[1]="well";//现在,我把原来数组arr1的值改变一下
ArrCopyTest.printArr(arr1);
ArrCopyTest.printArr(arr1copy8);
}
public static void printArr(String arr[]){
if(arr==null){
System.out.println("arr is null");
}else{
System.out.println("arr.hashCode is:"+arr.hashCode());
for(int i=0;i